From f205223c10ba0fe4a9408cb54f1f0e2341560cae Mon Sep 17 00:00:00 2001 From: Katsute <58778985+Katsute@users.noreply.github.com> Date: Mon, 30 Oct 2023 22:44:38 -0400 Subject: [PATCH] Initialize repository --- .github/workflows/ci.yml | 14 + .github/workflows/release.yml | 13 + LICENSE | 437 ++++++++++++++++++++++ README.md | 8 +- TF100.sp | 139 +++++++ TF100.txt | 38 ++ whitelist.txt | 681 ++++++++++++++++++++++++++++++++++ 7 files changed, 1329 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/release.yml create mode 100644 LICENSE create mode 100644 TF100.sp create mode 100644 TF100.txt create mode 100644 whitelist.txt diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..b73e3ca --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,14 @@ +name: SourcePawn CI +on: + push: + branches: [main] + pull_request: + branches: [main] + types: [opened, reopened, synchronize] + +jobs: + ci: + name: SourcePawn CI + uses: KatsuteTF/Workflows/.github/workflows/ci.yml@main + with: + file: TF100.sp \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..1ed04f2 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,13 @@ +name: Release +on: + release: + types: [published] + +jobs: + release: + name: Release Plugin + uses: KatsuteTF/Workflows/.github/workflows/release.yml@main + with: + file: TF100.sp + secrets: + token: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..bfef380 --- /dev/null +++ b/LICENSE @@ -0,0 +1,437 @@ +Attribution-NonCommercial-ShareAlike 4.0 International + +======================================================================= + +Creative Commons Corporation ("Creative Commons") is not a law firm and +does not provide legal services or legal advice. Distribution of +Creative Commons public licenses does not create a lawyer-client or +other relationship. Creative Commons makes its licenses and related +information available on an "as-is" basis. Creative Commons gives no +warranties regarding its licenses, any material licensed under their +terms and conditions, or any related information. Creative Commons +disclaims all liability for damages resulting from their use to the +fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and +conditions that creators and other rights holders may use to share +original works of authorship and other material subject to copyright +and certain other rights specified in the public license below. The +following considerations are for informational purposes only, are not +exhaustive, and do not form part of our licenses. + + Considerations for licensors: Our public licenses are + intended for use by those authorized to give the public + permission to use material in ways otherwise restricted by + copyright and certain other rights. Our licenses are + irrevocable. Licensors should read and understand the terms + and conditions of the license they choose before applying it. + Licensors should also secure all rights necessary before + applying our licenses so that the public can reuse the + material as expected. Licensors should clearly mark any + material not subject to the license. This includes other CC- + licensed material, or material used under an exception or + limitation to copyright. More considerations for licensors: + wiki.creativecommons.org/Considerations_for_licensors + + Considerations for the public: By using one of our public + licenses, a licensor grants the public permission to use the + licensed material under specified terms and conditions. If + the licensor's permission is not necessary for any reason--for + example, because of any applicable exception or limitation to + copyright--then that use is not regulated by the license. Our + licenses grant only permissions under copyright and certain + other rights that a licensor has authority to grant. Use of + the licensed material may still be restricted for other + reasons, including because others have copyright or other + rights in the material. A licensor may make special requests, + such as asking that all changes be marked or described. + Although not required by our licenses, you are encouraged to + respect those requests where reasonable. More considerations + for the public: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International +Public License + +By exercising the Licensed Rights (defined below), You accept and agree +to be bound by the terms and conditions of this Creative Commons +Attribution-NonCommercial-ShareAlike 4.0 International Public License +("Public License"). To the extent this Public License may be +interpreted as a contract, You are granted the Licensed Rights in +consideration of Your acceptance of these terms and conditions, and the +Licensor grants You such rights in consideration of benefits the +Licensor receives from making the Licensed Material available under +these terms and conditions. + + +Section 1 -- Definitions. + + a. Adapted Material means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material + and in which the Licensed Material is translated, altered, + arranged, transformed, or otherwise modified in a manner requiring + permission under the Copyright and Similar Rights held by the + Licensor. For purposes of this Public License, where the Licensed + Material is a musical work, performance, or sound recording, + Adapted Material is always produced where the Licensed Material is + synched in timed relation with a moving image. + + b. Adapter's License means the license You apply to Your Copyright + and Similar Rights in Your contributions to Adapted Material in + accordance with the terms and conditions of this Public License. + + c. BY-NC-SA Compatible License means a license listed at + creativecommons.org/compatiblelicenses, approved by Creative + Commons as essentially the equivalent of this Public License. + + d. Copyright and Similar Rights means copyright and/or similar rights + closely related to copyright including, without limitation, + performance, broadcast, sound recording, and Sui Generis Database + Rights, without regard to how the rights are labeled or + categorized. For purposes of this Public License, the rights + specified in Section 2(b)(1)-(2) are not Copyright and Similar + Rights. + + e. Effective Technological Measures means those measures that, in the + absence of proper authority, may not be circumvented under laws + fulfilling obligations under Article 11 of the WIPO Copyright + Treaty adopted on December 20, 1996, and/or similar international + agreements. + + f. Exceptions and Limitations means fair use, fair dealing, and/or + any other exception or limitation to Copyright and Similar Rights + that applies to Your use of the Licensed Material. + + g. License Elements means the license attributes listed in the name + of a Creative Commons Public License. The License Elements of this + Public License are Attribution, NonCommercial, and ShareAlike. + + h. Licensed Material means the artistic or literary work, database, + or other material to which the Licensor applied this Public + License. + + i. Licensed Rights means the rights granted to You subject to the + terms and conditions of this Public License, which are limited to + all Copyright and Similar Rights that apply to Your use of the + Licensed Material and that the Licensor has authority to license. + + j. Licensor means the individual(s) or entity(ies) granting rights + under this Public License. + + k. NonCommercial means not primarily intended for or directed towards + commercial advantage or monetary compensation. For purposes of + this Public License, the exchange of the Licensed Material for + other material subject to Copyright and Similar Rights by digital + file-sharing or similar means is NonCommercial provided there is + no payment of monetary compensation in connection with the + exchange. + + l. Share means to provide material to the public by any means or + process that requires permission under the Licensed Rights, such + as reproduction, public display, public performance, distribution, + dissemination, communication, or importation, and to make material + available to the public including in ways that members of the + public may access the material from a place and at a time + individually chosen by them. + + m. Sui Generis Database Rights means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of + the Council of 11 March 1996 on the legal protection of databases, + as amended and/or succeeded, as well as other essentially + equivalent rights anywhere in the world. + + n. You means the individual or entity exercising the Licensed Rights + under this Public License. Your has a corresponding meaning. + + +Section 2 -- Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, + the Licensor hereby grants You a worldwide, royalty-free, + non-sublicensable, non-exclusive, irrevocable license to + exercise the Licensed Rights in the Licensed Material to: + + a. reproduce and Share the Licensed Material, in whole or + in part, for NonCommercial purposes only; and + + b. produce, reproduce, and Share Adapted Material for + NonCommercial purposes only. + + 2. Exceptions and Limitations. For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public + License does not apply, and You do not need to comply with + its terms and conditions. + + 3. Term. The term of this Public License is specified in Section + 6(a). + + 4. Media and formats; technical modifications allowed. The + Licensor authorizes You to exercise the Licensed Rights in + all media and formats whether now known or hereafter created, + and to make technical modifications necessary to do so. The + Licensor waives and/or agrees not to assert any right or + authority to forbid You from making technical modifications + necessary to exercise the Licensed Rights, including + technical modifications necessary to circumvent Effective + Technological Measures. For purposes of this Public License, + simply making modifications authorized by this Section 2(a) + (4) never produces Adapted Material. + + 5. Downstream recipients. + + a. Offer from the Licensor -- Licensed Material. Every + recipient of the Licensed Material automatically + receives an offer from the Licensor to exercise the + Licensed Rights under the terms and conditions of this + Public License. + + b. Additional offer from the Licensor -- Adapted Material. + Every recipient of Adapted Material from You + automatically receives an offer from the Licensor to + exercise the Licensed Rights in the Adapted Material + under the conditions of the Adapter's License You apply. + + c. No downstream restrictions. You may not offer or impose + any additional or different terms or conditions on, or + apply any Effective Technological Measures to, the + Licensed Material if doing so restricts exercise of the + Licensed Rights by any recipient of the Licensed + Material. + + 6. No endorsement. Nothing in this Public License constitutes or + may be construed as permission to assert or imply that You + are, or that Your use of the Licensed Material is, connected + with, or sponsored, endorsed, or granted official status by, + the Licensor or others designated to receive attribution as + provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1. Moral rights, such as the right of integrity, are not + licensed under this Public License, nor are publicity, + privacy, and/or other similar personality rights; however, to + the extent possible, the Licensor waives and/or agrees not to + assert any such rights held by the Licensor to the limited + extent necessary to allow You to exercise the Licensed + Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this + Public License. + + 3. To the extent possible, the Licensor waives any right to + collect royalties from You for the exercise of the Licensed + Rights, whether directly or through a collecting society + under any voluntary or waivable statutory or compulsory + licensing scheme. In all other cases the Licensor expressly + reserves any right to collect such royalties, including when + the Licensed Material is used other than for NonCommercial + purposes. + + +Section 3 -- License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the +following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material (including in modified + form), You must: + + a. retain the following if it is supplied by the Licensor + with the Licensed Material: + + i. identification of the creator(s) of the Licensed + Material and any others designated to receive + attribution, in any reasonable manner requested by + the Licensor (including by pseudonym if + designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of + warranties; + + v. a URI or hyperlink to the Licensed Material to the + extent reasonably practicable; + + b. indicate if You modified the Licensed Material and + retain an indication of any previous modifications; and + + c. indicate the Licensed Material is licensed under this + Public License, and include the text of, or the URI or + hyperlink to, this Public License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any + reasonable manner based on the medium, means, and context in + which You Share the Licensed Material. For example, it may be + reasonable to satisfy the conditions by providing a URI or + hyperlink to a resource that includes the required + information. + 3. If requested by the Licensor, You must remove any of the + information required by Section 3(a)(1)(A) to the extent + reasonably practicable. + + b. ShareAlike. + + In addition to the conditions in Section 3(a), if You Share + Adapted Material You produce, the following conditions also apply. + + 1. The Adapter's License You apply must be a Creative Commons + license with the same License Elements, this version or + later, or a BY-NC-SA Compatible License. + + 2. You must include the text of, or the URI or hyperlink to, the + Adapter's License You apply. You may satisfy this condition + in any reasonable manner based on the medium, means, and + context in which You Share Adapted Material. + + 3. You may not offer or impose any additional or different terms + or conditions on, or apply any Effective Technological + Measures to, Adapted Material that restrict exercise of the + rights granted under the Adapter's License You apply. + + +Section 4 -- Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that +apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right + to extract, reuse, reproduce, and Share all or a substantial + portion of the contents of the database for NonCommercial purposes + only; + + b. if You include all or a substantial portion of the database + contents in a database in which You have Sui Generis Database + Rights, then the database in which You have Sui Generis Database + Rights (but not its individual contents) is Adapted Material, + including for purposes of Section 3(b); and + + c. You must comply with the conditions in Section 3(a) if You Share + all or a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not +replace Your obligations under this Public License where the Licensed +Rights include other Copyright and Similar Rights. + + +Section 5 -- Disclaimer of Warranties and Limitation of Liability. + + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. + + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. + + c. The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent + possible, most closely approximates an absolute disclaimer and + waiver of all liability. + + +Section 6 -- Term and Termination. + + a. This Public License applies for the term of the Copyright and + Similar Rights licensed here. However, if You fail to comply with + this Public License, then Your rights under this Public License + terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under + Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided + it is cured within 30 days of Your discovery of the + violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any + right the Licensor may have to seek remedies for Your violations + of this Public License. + + c. For the avoidance of doubt, the Licensor may also offer the + Licensed Material under separate terms or conditions or stop + distributing the Licensed Material at any time; however, doing so + will not terminate this Public License. + + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public + License. + + +Section 7 -- Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different + terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the + Licensed Material not stated herein are separate from and + independent of the terms and conditions of this Public License. + + +Section 8 -- Interpretation. + + a. For the avoidance of doubt, this Public License does not, and + shall not be interpreted to, reduce, limit, restrict, or impose + conditions on any use of the Licensed Material that could lawfully + be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is + deemed unenforceable, it shall be automatically reformed to the + minimum extent necessary to make it enforceable. If the provision + cannot be reformed, it shall be severed from this Public License + without affecting the enforceability of the remaining terms and + conditions. + + c. No term or condition of this Public License will be waived and no + failure to comply consented to unless expressly agreed to by the + Licensor. + + d. Nothing in this Public License constitutes or may be interpreted + as a limitation upon, or waiver of, any privileges and immunities + that apply to the Licensor or You, including from the legal + processes of any jurisdiction or authority. + +======================================================================= + +Creative Commons is not a party to its public +licenses. Notwithstanding, Creative Commons may elect to apply one of +its public licenses to material it publishes and in those instances +will be considered the “Licensor.” The text of the Creative Commons +public licenses is dedicated to the public domain under the CC0 Public +Domain Dedication. Except for the limited purpose of indicating that +material is shared under a Creative Commons public license or as +otherwise permitted by the Creative Commons policies published at +creativecommons.org/policies, Creative Commons does not authorize the +use of the trademark "Creative Commons" or any other trademark or logo +of Creative Commons without its prior written consent including, +without limitation, in connection with any unauthorized modifications +to any of its public licenses or any other arrangements, +understandings, or agreements concerning use of licensed material. For +the avoidance of doubt, this paragraph does not form part of the +public licenses. + +Creative Commons may be contacted at creativecommons.org. \ No newline at end of file diff --git a/README.md b/README.md index 13c61ba..7b5f411 100644 --- a/README.md +++ b/README.md @@ -1 +1,7 @@ -# TF100 \ No newline at end of file +### [TF2] TF100 + +100 player server optimization plugin + +[![Creative Commons License](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png)](http://creativecommons.org/licenses/by-nc-sa/4.0/) + +Licensed under [CC BY-NC-SA 4.0](https://github.com/KatsuteTF/TF100/blob/main/LICENSE) \ No newline at end of file diff --git a/TF100.sp b/TF100.sp new file mode 100644 index 0000000..d0df196 --- /dev/null +++ b/TF100.sp @@ -0,0 +1,139 @@ +// Copyright (C) 2023 Katsute | Licensed under CC BY-NC-SA 4.0 + +#pragma semicolon 1 + +#include +#include +#include + +public Plugin myinfo = { + name = "TF100", + author = "Katsute", + description = "Optimizations for 100 player servers", + version = "1.0", + url = "https://github.com/KatsuteTF/TF100" +} + +public void OnPluginStart(){ + // Entities + FindConVar("tf_dropped_weapon_lifetime").SetInt(0); + + // Physics + FindConVar("sv_turbophysics").SetBool(true); + FindConVar("tf_resolve_stuck_players").SetBool(false); + FindConVar("tf_avoidteammates_pushaway").SetBool(false); + + // Network + FindConVar("sv_parallel_sendsnapshot").SetBool(true); + FindConVar("net_queued_packet_thread").SetInt(581304); + FindConVar("net_splitrate").SetInt(200000); + FindConVar("sv_master_share_game_socket").SetBool(false); + + FindConVar("net_compresspackets").SetBool(true); + FindConVar("net_compresspackets_minsize").SetInt(1261); + + FindConVar("sv_allowupload").SetBool(false); + FindConVar("sv_allowdownload").SetBool(false); + FindConVar("net_maxfilesize").SetInt(0); + + FindConVar("sv_clockcorrection_msecs").SetInt(130); + FindConVar("sv_playerperfhistorycount").SetInt(0); + + FindConVar("sv_minrate").SetInt(1048576); + FindConVar("sv_maxrate").SetInt(1048576); + FindConVar("net_splitpacket_maxrate").SetInt(1048576); + FindConVar("net_maxcleartime").SetFloat(0.001); + + FindConVar("sv_maxroutable").SetInt(1260); + FindConVar("net_maxfragments").SetInt(1260); + FindConVar("net_maxroutable").SetInt(1260); + + // Edicts + FindConVar("sv_lowedict_action").SetInt(4); + FindConVar("sv_lowedict_threshold").SetInt(32); + + // MvM + FindConVar("tf_mvm_defenders_team_size").SetInt(78); + FindConVar("tf_mvm_max_connected_players").SetInt(78); + + // Client + FindConVar("breakable_multiplayer").SetBool(false); + FindConVar("func_break_max_pieces").SetInt(0); + + FindConVar("prop_active_gib_limit").SetInt(0); + FindConVar("props_break_max_pieces_perframe").SetInt(0); + + FindConVar("g_ragdoll_important_maxcount").SetInt(0); + FindConVar("g_ragdoll_maxcount").SetInt(0); + + FindConVar("tf_spawn_glows_duration").SetInt(0); + FindConVar("tf_spec_xray").SetBool(false); + + FindConVar("anim_3wayblend").SetBool(false); + + FindConVar("tf_tournament_hide_domination_icons").SetBool(true); + FindConVar("mp_show_voice_icons").SetBool(false); + + FindConVar("sv_allow_voice_from_file").SetBool(false); + + FindConVar("sv_client_cmdrate_difference").SetBool(false); + FindConVar("sv_mincmdrate").SetInt(20); + FindConVar("sv_maxcmdrate").SetInt(20); + FindConVar("sv_minupdaterate").SetInt(15); + FindConVar("sv_maxupdaterate").SetInt(15); + FindConVar("sv_maxusrcmdprocessticks").SetInt(29); + + FindConVar("sv_client_predict").SetBool(true); + + FindConVar("sv_client_max_interp_ratio").SetInt(2); + FindConVar("sv_client_min_interp_ratio").SetInt(1); + + // Map Edicts + DeleteEntities("keyframe_rope"); + DeleteEntities("move_rope"); + DeleteEntities("prop_physics"); + DeleteEntities("prop_physics_override"); + DeleteEntities("info_particle_system"); + DeleteEntities("point_spotlight"); + + // // mp_tournament_whitelist patch https://github.com/sapphonie/tf2rue + // GameData gd = LoadGameConfigFile("TF100"); // https://github.com/sapphonie/tf2rue/blob/main/gamedata/tf2.rue.txt + // if(gd == null){ + // SetFailState("Failed to load TF100 gamedata"); + // }else{ + // MemoryPatch tmpatch = MemoryPatch.CreateFromConf(gd, "CEconItemSystem::ReloadWhitelist::nopnop"); + // if(!tmpatch.Validate()) + // ThrowError("Failed to verify CEconItemSystem::ReloadWhitelist::nopnop"); + // tmpatch.Enable(); + // } +} + +public void OnEntityCreated(int entity, const char[] classname){ + if( + StrEqual(classname, "tf_ragdoll") || StrEqual(classname, "prop_ragdoll") || + StrEqual(classname, "keyframe_rope") || StrEqual(classname, "move_rope") || + StrEqual(classname, "entity_bird") || + ((StrEqual(classname, "tf_ammo_pack") || StrEqual(classname, "item_healthkit_small")) && HasEntProp(entity, Prop_Send, "m_hOwnerEntity")) || + StrEqual(classname, "prop_physics") || StrEqual(classname, "prop_physics_override") || + StrEqual(classname, "info_particle_system") || + StrEqual(classname, "point_spotlight") + ) + DeleteEntity(entity); + // else if(StrEqual(classname, "prop_physics_override") && HasEntProp(entity, Prop_Data, "m_ModelName")){ + // char model[64]; + // GetEntPropString(entity, Prop_Data, "m_ModelName", model, 64); + // if(strncmp(model, "c_bread_", 8)) + // DeleteEntity(entity); + // } +} + +public void DeleteEntity(const int entity){ + if(IsValidEntity(entity)) + AcceptEntityInput(entity, "Kill"); +} + +public void DeleteEntities(const char[] classname){ + int entity; + while((entity = FindEntityByClassname(entity, "classname")) != -1) + DeleteEntity(entity); +} \ No newline at end of file diff --git a/TF100.txt b/TF100.txt new file mode 100644 index 0000000..93a76c8 --- /dev/null +++ b/TF100.txt @@ -0,0 +1,38 @@ +"Games" +{ + "tf" + { + "Signatures" + { + "CEconItemSystem::ReloadWhitelist" + { + "library" "server" + "linux" "@_ZN15CEconItemSystem15ReloadWhitelistEv" + "windows" "\x55\x8B\xEC\x83\xEC\x0C\x53\x56\x57\x8B\xD9\xC6\x45\xFF\x01" + } + } + "MemPatches" + { + "CEconItemSystem::ReloadWhitelist::nopnop" + { + "signature" "CEconItemSystem::ReloadWhitelist" + "linux" + { + "offset" "34h" + // jnz + "verify" "\x74\x53" + // nop nop + "patch" "\x90\x90" + } + "windows" + { + "offset" "45h" + // jz + "verify" "\x74\x6C" + // nop nop + "patch" "\x90\x90" + } + } + } + } +} \ No newline at end of file diff --git a/whitelist.txt b/whitelist.txt new file mode 100644 index 0000000..dcb28b6 --- /dev/null +++ b/whitelist.txt @@ -0,0 +1,681 @@ +"item_whitelist" +{ + "unlisted_items_default_to" "0" + + //---------------- Allowed weapons (Total: 133) -----------------\\ + //______________________ Multiple classes _______________________\\ + "Panic Attack Shotgun" "1" + "The B.A.S.E. Jumper" "1" + "The Half-Zatoichi" "1" + "The Pain Train" "1" + "The Reserve Shooter" "1" + //____________________________ Scout ____________________________\\ + "Baby Face's Blaster" "1" + "Bonk! Atomic Punch" "1" + "Crit-a-Cola" "1" + "Mad Milk" "1" + "Pretty Boy's Pocket Pistol" "1" + "Sun-on-a-Stick" "1" + "The Atomizer" "1" + "The Back Scatter" "1" + "The Boston Basher" "1" + "The Candy Cane" "1" + "The Fan O'War" "1" + "The Flying Guillotine" "1" + "The Force-a-Nature" "1" + "The Sandman" "1" + "The Shortstop" "1" + "The Soda Popper" "1" + "The Winger" "1" + "The Wrap Assassin" "1" + //___________________________ Soldier ___________________________\\ + "Rocket Jumper" "1" + "The Air Strike" "1" + "The Battalion's Backup" "1" + "The Beggar's Bazooka" "1" + "The Black Box" "1" + "The Buff Banner" "1" + "The Concheror" "1" + "The Cow Mangler 5000" "1" + "The Direct Hit" "1" + "The Disciplinary Action" "1" + "The Equalizer" "1" + "The Escape Plan" "1" + "The Gunboats" "1" + "The Liberty Launcher" "1" + "The Mantreads" "1" + "The Market Gardener" "1" + "The Righteous Bison" "1" + //____________________________ Pyro _____________________________\\ + "Sharpened Volcano Fragment" "1" + "The Axtinguisher" "1" + "The Back Scratcher" "1" + "The Backburner" "1" + "The Degreaser" "1" + "The Detonator" "1" + "The Dragon's Fury" "1" + "The Flare Gun" "1" + "The Gas Passer" "1" + "The Homewrecker" "1" + "The Hot Hand" "1" + "The Manmelter" "1" + "The Neon Annihilator" "1" + "The Phlogistinator" "1" + "The Powerjack" "1" + "The Scorch Shot" "1" + "The Thermal Thruster" "1" + "The Third Degree" "1" + //___________________________ Demoman ___________________________\\ + "Ali Baba's Wee Booties" "1" + "Stickybomb Jumper" "1" + "The Chargin' Targe" "1" + "The Claidheamohmor" "1" + "The Eyelander" "1" + "The Iron Bomber" "1" + "The Loch-n-Load" "1" + "The Loose Cannon" "1" + "The Persian Persuader" "1" + "The Quickiebomb Launcher" "1" + "The Scotsman's Skullcutter" "1" + "The Scottish Resistance" "1" + "The Splendid Screen" "1" + "The Tide Turner" "1" + "The Ullapool Caber" "1" + //____________________________ Heavy ____________________________\\ + "Fists of Steel" "1" + "Gloves of Running Urgently" "1" + "Natascha" "1" + "The Brass Beast" "1" + "The Buffalo Steak Sandvich" "1" + "The Dalokohs Bar" "1" + "The Eviction Notice" "1" + "The Family Business" "1" + "The Holiday Punch" "1" + "The Huo Long Heatmaker" "1" + "The Killing Gloves of Boxing" "1" + "The Sandvich" "1" + "The Second Banana" "1" + "Tomislav" "1" + "Warrior's Spirit" "1" + //__________________________ Engineer ___________________________\\ + "The Eureka Effect" "1" + "The Frontier Justice" "1" + "The Gunslinger" "1" + "The Jag" "1" + "The Pomson 6000" "1" + "The Rescue Ranger" "1" + "The Short Circuit" "1" + "The Southern Hospitality" "1" + "The Widowmaker" "1" + "The Wrangler" "1" + //____________________________ Medic ____________________________\\ + "The Amputator" "1" + "The Blutsauger" "1" + "The Crusader's Crossbow" "1" + "The Kritzkrieg" "1" + "The Overdose" "1" + "The Quick-Fix" "1" + "The Solemn Vow" "1" + "The Ubersaw" "1" + "The Vaccinator" "1" + "The Vita-Saw" "1" + //___________________________ Sniper ____________________________\\ + "Darwin's Danger Shield" "1" + "Jarate" "1" + "The Bazaar Bargain" "1" + "The Bushwacka" "1" + "The Classic" "1" + "The Cleaner's Carbine" "1" + "The Cozy Camper" "1" + "The Hitman's Heatmaker" "1" + "The Huntsman" "1" + "The Machina" "1" + "The Razorback" "1" + "The Shahanshah" "1" + "The Sydney Sleeper" "1" + "The Tribalman's Shiv" "1" + //_____________________________ Spy _____________________________\\ + "Conniver's Kunai" "1" + "L'Etranger" "1" + "The Ambassador" "1" + "The Big Earner" "1" + "The Cloak and Dagger" "1" + "The Dead Ringer" "1" + "The Diamondback" "1" + "The Enforcer" "1" + "The Red-Tape Recorder" "1" + "The Spy-cicle" "1" + "Your Eternal Reward" "1" + + //------------- Allowed weapon reskins (Total: 151) -------------\\ + //_________________________ All classes _________________________\\ + "Gold Frying Pan" "1" + "Saxxy" "1" + //______________________ Multiple classes _______________________\\ + "Festive Shotgun 2014" "1" + "Frying Pan" "1" + "Memory Maker" "1" + "Necro Smasher" "1" + "The Bat Outta Hell" "1" + "The C.A.P.P.E.R" "1" + "The Conscientious Objector" "1" + "The Crossing Guard" "1" + "The Freedom Staff" "1" + "The Ham Shank" "1" + "TTG Max Pistol" "1" + "TTG Max Pistol - Poker Night" "1" + //____________________________ Scout ____________________________\\ + "Batsaber" "1" + "Blood Botkiller Scattergun Mk.I" "1" + "Carbonado Botkiller Scattergun Mk.I" "1" + "Diamond Botkiller Scattergun Mk.I" "1" + "Festive Bat 2011" "1" + "Festive Bonk 2014" "1" + "Festive Force-a-Nature" "1" + "Festive Holy Mackerel" "1" + "Festive Scattergun 2011" "1" + "Gold Botkiller Scattergun Mk.I" "1" + "Gold Botkiller Scattergun Mk.II" "1" + "Mutated Milk" "1" + "Rust Botkiller Scattergun Mk.I" "1" + "Silver Botkiller Scattergun Mk.I" "1" + "Silver Botkiller Scattergun Mk.II" "1" + "The Holy Mackerel" "1" + "Three-Rune Blade" "1" + "Unarmed Combat" "1" + //___________________________ Soldier ___________________________\\ + "Blood Botkiller Rocket Launcher Mk.I" "1" + "Carbonado Botkiller Rocket Launcher Mk.I" "1" + "Diamond Botkiller Rocket Launcher Mk.I" "1" + "Festive Black Box" "1" + "Festive Buff Banner" "1" + "Festive Rocket Launcher 2011" "1" + "Gold Botkiller Rocket Launcher Mk.I" "1" + "Gold Botkiller Rocket Launcher Mk.II" "1" + "Rust Botkiller Rocket Launcher Mk.I" "1" + "Silver Botkiller Rocket Launcher Mk.I" "1" + "Silver Botkiller Rocket Launcher Mk.II" "1" + "The Original" "1" + //____________________________ Pyro _____________________________\\ + "Blood Botkiller Flame Thrower Mk.I" "1" + "Carbonado Botkiller Flame Thrower Mk.I" "1" + "Diamond Botkiller Flame Thrower Mk.I" "1" + "Festive Axtinguisher" "1" + "Festive Backburner 2014" "1" + "Festive Flamethrower 2011" "1" + "Festive Flare Gun" "1" + "Gold Botkiller Flame Thrower Mk.I" "1" + "Gold Botkiller Flame Thrower Mk.II" "1" + "Rust Botkiller Flame Thrower Mk.I" "1" + "Silver Botkiller Flame Thrower Mk.I" "1" + "Silver Botkiller Flame Thrower Mk.II" "1" + "The Maul" "1" + "The Nostromo Napalmer" "1" + "The Postal Pummeler" "1" + //___________________________ Demoman ___________________________\\ + "Blood Botkiller Stickybomb Launcher Mk.I" "1" + "Carbonado Botkiller Stickybomb Launcher Mk.I" "1" + "Diamond Botkiller Stickybomb Launcher Mk.I" "1" + "Festive Eyelander" "1" + "Festive Grenade Launcher" "1" + "Festive Stickybomb Launcher 2011" "1" + "Festive Targe 2014" "1" + "Gold Botkiller Stickybomb Launcher Mk.I" "1" + "Gold Botkiller Stickybomb Launcher Mk.II" "1" + "Nessie's Nine Iron" "1" + "Rust Botkiller Stickybomb Launcher Mk.I" "1" + "Silver Botkiller Stickybomb Launcher Mk.I" "1" + "Silver Botkiller Stickybomb Launcher Mk.II" "1" + "The Bootlegger" "1" + "The Horseless Headless Horseman's Headtaker" "1" + "The Scottish Handshake" "1" + //____________________________ Heavy ____________________________\\ + "Apoco-Fists" "1" + "Blood Botkiller Minigun Mk.I" "1" + "Carbonado Botkiller Minigun Mk.I" "1" + "Diamond Botkiller Minigun Mk.I" "1" + "Festive Gloves of Running Urgently" "1" + "Festive Minigun 2011" "1" + "Festive Sandvich" "1" + "Fishcake" "1" + "Gold Botkiller Minigun Mk.I" "1" + "Gold Botkiller Minigun Mk.II" "1" + "Iron Curtain" "1" + "Rust Botkiller Minigun Mk.I" "1" + "Silver Botkiller Minigun Mk.I" "1" + "Silver Botkiller Minigun Mk.II" "1" + "The Bread Bite" "1" + //__________________________ Engineer ___________________________\\ + "Blood Botkiller Wrench Mk.I" "1" + "Carbonado Botkiller Wrench Mk.I" "1" + "Diamond Botkiller Wrench Mk.I" "1" + "Festive Frontier Justice" "1" + "Festive Wrangler" "1" + "Festive Wrench 2011" "1" + "Gold Botkiller Wrench Mk.I" "1" + "Gold Botkiller Wrench Mk.II" "1" + "Golden Wrench" "1" + "Rust Botkiller Wrench Mk.I" "1" + "Silver Botkiller Wrench Mk.I" "1" + "Silver Botkiller Wrench Mk.II" "1" + "The Giger Counter" "1" + //____________________________ Medic ____________________________\\ + "Blood Botkiller Medi Gun Mk.I" "1" + "Carbonado Botkiller Medi Gun Mk.I" "1" + "Diamond Botkiller Medi Gun Mk.I" "1" + "Festive Bonesaw 2014" "1" + "Festive Crusader's Crossbow" "1" + "Festive Medigun 2011" "1" + "Festive Ubersaw" "1" + "Gold Botkiller Medi Gun Mk.I" "1" + "Gold Botkiller Medi Gun Mk.II" "1" + "Rust Botkiller Medi Gun Mk.I" "1" + "Silver Botkiller Medi Gun Mk.I" "1" + "Silver Botkiller Medi Gun Mk.II" "1" + //___________________________ Sniper ____________________________\\ + "Blood Botkiller Sniper Rifle Mk.I" "1" + "Carbonado Botkiller Sniper Rifle Mk.I" "1" + "Diamond Botkiller Sniper Rifle Mk.I" "1" + "Festive Huntsman" "1" + "Festive Jarate" "1" + "Festive SMG 2014" "1" + "Festive Sniper Rifle 2011" "1" + "Gold Botkiller Sniper Rifle Mk.I" "1" + "Gold Botkiller Sniper Rifle Mk.II" "1" + "Rust Botkiller Sniper Rifle Mk.I" "1" + "Shooting Star" "1" + "Silver Botkiller Sniper Rifle Mk.I" "1" + "Silver Botkiller Sniper Rifle Mk.II" "1" + "The AWPer Hand" "1" + "The Fortified Compound" "1" + "The Self-Aware Beauty Mark" "1" + //_____________________________ Spy _____________________________\\ + "Blood Botkiller Knife Mk.I" "1" + "Carbonado Botkiller Knife Mk.I" "1" + "Diamond Botkiller Knife Mk.I" "1" + "Festive Ambassador" "1" + "Festive Knife 2011" "1" + "Festive Revolver 2014" "1" + "Festive Sapper" "1" + "Gold Botkiller Knife Mk.I" "1" + "Gold Botkiller Knife Mk.II" "1" + "Rust Botkiller Knife Mk.I" "1" + "Silver Botkiller Knife Mk.I" "1" + "Silver Botkiller Knife Mk.II" "1" + "The Ap-Sap" "1" + "The Black Rose" "1" + "The Quackenbirdt" "1" + "The Sharp Dresser" "1" + "The Snack Attack" "1" + "The Wanga Prick" "1" + "TTG Sam Revolver" "1" + "TTG Watch" "1" + + //------------------ Gifting items (Total: 32) ------------------\\ + "Companion Square Promo Package" "1" + "Gift - 1 Duck Token" "1" + "Gift - 1 EOTL Key" "1" + "Gift - 1 Player" "1" + "Gift - 1 RoboKey 2013" "1" + "Gift - 1 SummerKey 2013" "1" + "Gift - 23 Duck Tokens" "1" + "Gift - 23 EOTL Keys" "1" + "Gift - 23 RoboKeys 2013" "1" + "Gift - 23 SummerKeys 2013" "1" + "Gift - 24 Players" "1" + "Halloween Contract Package" "1" + "Halloween Giveaway Cauldron 2014 (Achievement)" "1" + "Halloween Giveaway Cauldron 2014 (Base)" "1" + "Halloween Giveaway Package 2011 (Cauldron)" "1" + "Manniversary Giveaway Package" "1" + "Pallet of Crates" "1" + "Portal 2 Soundtrack Promo Package" "1" + "Random Droppable Paints Package" "1" + "Sandvich Promo Package" "1" + "Self Gift - Mutated Bread Box" "1" + "Self Gift - Stocking Stuffer 2013" "1" + "Self Gift - Stocking Stuffer 2017" "1" + "Self Gift - Stocking Stuffer 2018" "1" + "Self Gift - Stocking Stuffer 2019" "1" + "Self Gift - Stocking Stuffer 2020" "1" + "Self Gift - Stocking Stuffer 2021" "1" + "Self Gift - Stocking Stuffer 2022" "1" + "Steam Translation Package" "1" + "Store Purchase Promotion Package" "1" + "Team Fortress 2 Soundtrack Promo Package" "1" + "Team Fortress 2 Soundtrack Promo Package Untradable" "1" + + //---------------------- Other (Total: 24) ----------------------\\ + //_________________________ All classes _________________________\\ + "Basic Spellbook" "1" + "Duck Badge" "1" + "Halloween Spellbook" "1" + "Secret Diary" "1" + "TF_WEAPON_GRAPPLINGHOOK" "1" + "TF_WEAPON_SPELLBOOK" "1" + "CheatDetectedHonesty" "1" + "CheatDetectedMajor" "1" + "CheatDetectedMinor" "1" + "July 2013 Claim Check" "1" + "Keyless Cosmetic Crate Demoman" "1" + "Keyless Cosmetic Crate Engineer" "1" + "Keyless Cosmetic Crate Heavy" "1" + "Keyless Cosmetic Crate Medic" "1" + "Keyless Cosmetic Crate MultiClass" "1" + "Keyless Cosmetic Crate Pyro" "1" + "Keyless Cosmetic Crate Scout" "1" + "Keyless Cosmetic Crate Sniper" "1" + "Keyless Cosmetic Crate Soldier" "1" + "Keyless Cosmetic Crate Spy" "1" + "Pile Of Ash" "1" + "Pile Of Curses" "1" + "Summer Adventure Pack" "1" + "Summer Starter Kit" "1" + + //--------------- Stock weapon skins (Total: 158) ---------------\\ + //______________________ Multiple classes _______________________\\ + "concealedkiller_pistol_redrockroscoe" "1" + "concealedkiller_shotgun_backwoodsboomstick" "1" + "craftsmann_pistol_homemadeheater" "1" + "craftsmann_shotgun_rusticruiner" "1" + "gentlemanne_pistol_dressedtokill" "1" + "gentlemanne_shotgun_coffinnail" "1" + "gentlemanne_shotgun_dressedtokill" "1" + "harvest_pistol_macabreweb" "1" + "harvest_pistol_nutcracker" "1" + "harvest_shotgun_autumn" "1" + "powerhouse_pistol_blackdahlia" "1" + "powerhouse_pistol_sandstonespecial" "1" + "powerhouse_shotgun_lightningrod" "1" + "pyroland_pistol_bluemew" "1" + "pyroland_pistol_braincandy" "1" + "pyroland_pistol_shottohell" "1" + "pyroland_shotgun_flowerpower" "1" + "teufort_pistol_hickoryholepuncher" "1" + "teufort_pistol_localhero" "1" + "teufort_shotgun_civicduty" "1" + "warbird_pistol_blitzkrieg" "1" + "warbird_shotgun_redbear" "1" + //____________________________ Scout ____________________________\\ + "concealedkiller_scattergun_nightterror" "1" + "craftsmann_scattergun_backcountryblaster" "1" + "craftsmann_scattergun_countrycrusher" "1" + "craftsmann_scattergun_tartantorpedo" "1" + "gentlemanne_scattergun_coffinnail" "1" + "harvest_scattergun_macabreweb" "1" + "harvest_scattergun_nutcracker" "1" + "powerhouse_scattergun_currentevent" "1" + "pyroland_scattergun_bluemew" "1" + "pyroland_scattergun_flowerpower" "1" + "pyroland_scattergun_shottohell" "1" + "teufort_scattergun_sprucedeuce" "1" + "warbird_scattergun_corsair" "1" + "warbird_scattergun_killerbee" "1" + //___________________________ Soldier ___________________________\\ + "concealedkiller_rocketlauncher_sandcannon" "1" + "concealedkiller_rocketlauncher_woodlandwarrior" "1" + "craftsmann_rocketlauncher_americanpastoral" "1" + "gentlemanne_rocketlauncher_coffinnail" "1" + "gentlemanne_rocketlauncher_highrollers" "1" + "harvest_rocketlauncher_autumn" "1" + "powerhouse_rocketlauncher_aquamarine" "1" + "powerhouse_rocketlauncher_shellshocker" "1" + "pyroland_rocketlauncher_bluemew" "1" + "pyroland_rocketlauncher_braincandy" "1" + "teufort_rocketlauncher_smalltownbringdown" "1" + "warbird_rocketlauncher_warhawk" "1" + //____________________________ Pyro _____________________________\\ + "concealedkiller_flamethrower_forestfire" "1" + "craftsmann_flamethrower_barnburner" "1" + "gentlemanne_flamethrower_coffinnail" "1" + "harvest_flamethrower_autumn" "1" + "harvest_flamethrower_nutcracker" "1" + "harvest_flamethrower_pumpkinpatch" "1" + "powerhouse_flamethrower_flashfryer" "1" + "powerhouse_flamethrower_turbinetorcher" "1" + "pyroland_flamethrower_balloonicorn" "1" + "pyroland_flamethrower_rainbow" "1" + "teufort_flamethrower_bovineblazemaker" "1" + "teufort_flamethrower_earthskyandfire" "1" + "warbird_flamethrower_warhawk" "1" + //___________________________ Demoman ___________________________\\ + "concealedkiller_stickybomblauncher_carpetbomber" "1" + "concealedkiller_stickybomblauncher_suddenflurry" "1" + "craftsmann_stickybomblauncher_blastedbombardier" "1" + "gentlemanne_grenadelauncher_coffinnail" "1" + "gentlemanne_grenadelauncher_topshelf" "1" + "gentlemanne_stickybomblauncher_coffinnail" "1" + "gentlemanne_stickybomblauncher_dressedtokill" "1" + "harvest_grenadelauncher_autumn" "1" + "harvest_grenadelauncher_macabreweb" "1" + "harvest_stickybomblauncher_autumn" "1" + "harvest_stickybomblauncher_macabreweb" "1" + "harvest_stickybomblauncher_pumpkinpatch" "1" + "powerhouse_stickybomblauncher_liquidasset" "1" + "powerhouse_stickybomblauncher_pinkelephant" "1" + "pyroland_grenadelauncher_rainbow" "1" + "pyroland_grenadelauncher_sweetdreams" "1" + "pyroland_stickybomblauncher_sweetdreams" "1" + "teufort_stickybomblauncher_rooftopwrangler" "1" + "warbird_grenadelauncher_butcherbird" "1" + "warbird_grenadelauncher_warhawk" "1" + "warbird_stickybomblauncher_blitzkrieg" "1" + //____________________________ Heavy ____________________________\\ + "concealedkiller_minigun_kingofthejungle" "1" + "craftsmann_minigun_antiqueannihilator" "1" + "craftsmann_minigun_ironwood" "1" + "gentlemanne_minigun_coffinnail" "1" + "gentlemanne_minigun_dressedtokill" "1" + "gentlemanne_minigun_topshelf" "1" + "harvest_minigun_macabreweb" "1" + "harvest_minigun_nutcracker" "1" + "harvest_minigun_pumpkinpatch" "1" + "powerhouse_minigun_brickhouse" "1" + "pyroland_minigun_braincandy" "1" + "pyroland_minigun_mistercuddles" "1" + "teufort_minigun_citizenpain" "1" + "teufort_minigun_warroom" "1" + "warbird_minigun_butcherbird" "1" + //__________________________ Engineer ___________________________\\ + "gentlemanne_wrench_dressedtokill" "1" + "gentlemanne_wrench_topshelf" "1" + "harvest_wrench_autumn" "1" + "harvest_wrench_boneyard" "1" + "harvest_wrench_nutcracker" "1" + "pyroland_wrench_torquedtohell" "1" + "warbird_wrench_airwolf" "1" + //____________________________ Medic ____________________________\\ + "concealedkiller_medigun_maskedmender" "1" + "concealedkiller_medigun_wrappedreviver" "1" + "craftsmann_medigun_reclaimedreanimator" "1" + "gentlemanne_medigun_coffinnail" "1" + "gentlemanne_medigun_dressedtokill" "1" + "gentlemanne_medigun_highrollers" "1" + "harvest_medigun_wildwood" "1" + "powerhouse_medigun_sparkoflife" "1" + "pyroland_medigun_flowerpower" "1" + "teufort_medigun_civilservant" "1" + "warbird_medigun_blitzkrieg" "1" + "warbird_medigun_corsair" "1" + //___________________________ Sniper ____________________________\\ + "concealedkiller_smg_woodsywidowmaker" "1" + "concealedkiller_sniperrifle_nightowl" "1" + "concealedkiller_sniperrifle_purplerange" "1" + "craftsmann_smg_plaidpotshotter" "1" + "craftsmann_sniperrifle_lumberfromdownunder" "1" + "craftsmann_sniperrifle_shotinthedark" "1" + "gentlemanne_smg_highrollers" "1" + "gentlemanne_sniperrifle_coffinnail" "1" + "gentlemanne_sniperrifle_dressedtokill" "1" + "harvest_smg_wildwood" "1" + "harvest_sniperrifle_boneyard" "1" + "harvest_sniperrifle_pumpkinpatch" "1" + "harvest_sniperrifle_wildwood" "1" + "powerhouse_smg_lowprofile" "1" + "powerhouse_sniperrifle_thunderbolt" "1" + "pyroland_smg_bluemew" "1" + "pyroland_sniperrifle_balloonicorn" "1" + "pyroland_sniperrifle_rainbow" "1" + "teufort_smg_teamsprayer" "1" + "teufort_smg_treadplatetormenter" "1" + "teufort_sniperrifle_bogtrotter" "1" + "warbird_smg_blitzkrieg" "1" + "warbird_sniperrifle_airwolf" "1" + //_____________________________ Spy _____________________________\\ + "concealedkiller_revolver_psychedelicslugger" "1" + "craftsmann_revolver_oldcountry" "1" + "gentlemanne_knife_dressedtokill" "1" + "gentlemanne_knife_topshelf" "1" + "gentlemanne_revolver_coffinnail" "1" + "gentlemanne_revolver_topshelf" "1" + "harvest_knife_boneyard" "1" + "harvest_revolver_boneyard" "1" + "harvest_revolver_macabreweb" "1" + "harvest_revolver_wildwood" "1" + "powerhouse_revolver_deadreckoner" "1" + "pyroland_knife_bluemew" "1" + "pyroland_knife_braincandy" "1" + "pyroland_knife_stabbedtohell" "1" + "pyroland_revolver_flowerpower" "1" + "teufort_revolver_mayor" "1" + "warbird_knife_airwolf" "1" + "warbird_knife_blitzkrieg" "1" + "warbird_revolver_blitzkrieg" "1" + + //------------------ Stock weapons (Total: 25) ------------------\\ + "Upgradeable TF_WEAPON_PISTOL" "1" + "Upgradeable TF_WEAPON_SHOTGUN_PRIMARY" "1" + "Upgradeable TF_WEAPON_BAT" "1" + "Upgradeable TF_WEAPON_SCATTERGUN" "1" + "Upgradeable TF_WEAPON_ROCKETLAUNCHER" "1" + "Upgradeable TF_WEAPON_SHOVEL" "1" + "Upgradeable TF_WEAPON_FIREAXE" "1" + "Upgradeable TF_WEAPON_FLAMETHROWER" "1" + "Upgradeable TF_WEAPON_BOTTLE" "1" + "Upgradeable TF_WEAPON_GRENADELAUNCHER" "1" + "Upgradeable TF_WEAPON_PIPEBOMBLAUNCHER" "1" + "Upgradeable TF_WEAPON_FISTS" "1" + "Upgradeable TF_WEAPON_MINIGUN" "1" + "Upgradeable TF_WEAPON_PDA_ENGINEER_BUILD" "1" + "Upgradeable TF_WEAPON_WRENCH" "1" + "Upgradeable TF_WEAPON_BONESAW" "1" + "Upgradeable TF_WEAPON_MEDIGUN" "1" + "Upgradeable TF_WEAPON_SYRINGEGUN_MEDIC" "1" + "Upgradeable TF_WEAPON_CLUB" "1" + "Upgradeable TF_WEAPON_SMG" "1" + "Upgradeable TF_WEAPON_SNIPERRIFLE" "1" + "Upgradeable TF_WEAPON_BUILDER_SPY" "1" + "Upgradeable TF_WEAPON_INVIS" "1" + "Upgradeable TF_WEAPON_KNIFE" "1" + "Upgradeable TF_WEAPON_REVOLVER" "1" + + //--------------------- Taunts (Total: 92) ----------------------\\ + //_________________________ All classes _________________________\\ + "Conga Taunt" "1" + "Flippin' Awesome Taunt" "1" + "High Five Taunt" "1" + "Laugh Taunt" "1" + "Replay Taunt" "1" + "RPS Taunt" "1" + "Skullcracker Taunt" "1" + "Square Dance Taunt" "1" + "Taunt: Burstchester" "1" + "Taunt: Kazotsky Kick" "1" + "Taunt: Killer Joke" "1" + "Taunt: Mannrobics" "1" + "Taunt: Second Rate Sorcery" "1" + "Taunt: The Fist Bump" "1" + "Taunt: The Scaredy-cat!" "1" + "Taunt: The Victory Lap" "1" + "Taunt: Yeti Punch" "1" + "Taunt: Yeti Smash" "1" + "Taunt: Zoomin' Broom" "1" + "The Shred Alert" "1" + //____________________________ Scout ____________________________\\ + "Battin' a Thousand Taunt" "1" + "Deep Fried Desire Taunt" "1" + "Taunt: Runner's Rhythm" "1" + "Taunt: Spin-to-Win" "1" + "Taunt: The Boston Boarder" "1" + "Taunt: The Boston Breakdance" "1" + "Taunt: The Bunnyhopper" "1" + "Taunt: The Carlton" "1" + "Taunt: The Homerunner's Hobby" "1" + "Taunt: The Killer Signature" "1" + "Taunt: The Scooty Scoot" "1" + "Taunt: The Trackman's Touchdown" "1" + //___________________________ Soldier ___________________________\\ + "Fresh Brewed Victory Taunt" "1" + "Taunt: Neck Snap" "1" + "Taunt: Panzer Pants" "1" + "Taunt: Rocket Jockey" "1" + "Taunt: Soldier's Requiem" "1" + "Taunt: Star-Spangled Strategy" "1" + "Taunt: The Fubar Fanfare" "1" + "Taunt: The Profane Puppeteer" "1" + //____________________________ Pyro _____________________________\\ + "Party Trick Taunt" "1" + "Pool Party Taunt" "1" + "Taunt: Roasty Toasty" "1" + "Taunt: Scorcher's Solo" "1" + "Taunt: The Balloonibouncer" "1" + "Taunt: The Headcase" "1" + "Taunt: The Hot Wheeler" "1" + "Taunt: The Skating Scorcher" "1" + //___________________________ Demoman ___________________________\\ + "Oblooterated Taunt" "1" + "Spent Well Spirits Taunt" "1" + "Taunt: Drunk Mann's Cannon" "1" + "Taunt: Roar O'War" "1" + "Taunt: Scotsmann's Stagger" "1" + "Taunt: Shanty Shipmate" "1" + "Taunt: The Drunken Sailor" "1" + "Taunt: The Pooped Deck" "1" + "Taunt: True Scotsman's Call" "1" + //____________________________ Heavy ____________________________\\ + "Taunt: Bare Knuckle Beatdown" "1" + "Taunt: Russian Rubdown" "1" + "Taunt: The Boiling Point" "1" + "Taunt: The Proletariat Showoff" "1" + "Taunt: The Road Rager" "1" + "Taunt: The Russian Arms Race" "1" + "Taunt: The Soviet Strongarm" "1" + "Taunt: The Table Tantrum" "1" + //__________________________ Engineer ___________________________\\ + "Rancho Relaxo Taunt" "1" + "Taunt: Bucking Bronco" "1" + "Taunt: Texas Truckin" "1" + "Taunt: Texas Twirl 'Em" "1" + "Taunt: The Dueling Banjo" "1" + "Taunt: The Jumping Jack" "1" + //____________________________ Medic ____________________________\\ + "Meet the Medic Heroic Taunt" "1" + "Results Are In Taunt" "1" + "Taunt: Borrowed Bones" "1" + "Taunt: Doctor's Defibrillators" "1" + "Taunt: Surgeon's Squeezebox" "1" + "Taunt: The Head Doctor" "1" + "Taunt: The Mannbulance!" "1" + "Taunt: Time Out Therapy" "1" + //___________________________ Sniper ____________________________\\ + "I See You Taunt" "1" + "Taunt: Didgeridrongo" "1" + "Taunt: Most Wanted" "1" + "Taunt: Shooter's Stakeout" "1" + "Taunt: The Killer Solo" "1" + //_____________________________ Spy _____________________________\\ + "Buy A Life Taunt" "1" + "Taunt: Disco Fever" "1" + "Taunt: Luxury Lounge" "1" + "Taunt: Tailored Terminal" "1" + "Taunt: The Boxtrot" "1" + "Taunt: The Crypt Creeper" "1" + "Taunt: The Travel Agent" "1" + "Taunt: Tuefort Tango" "1" + + //--------- Usable action items/MvM canteens (Total: 4) ---------\\ + "Battery Canteens" "1" + "Default Power Up Canteen (MvM)" "1" + "Duel MiniGame" "1" + "Power Up Canteen (MvM)" "1" +} \ No newline at end of file