using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Security; using System.Security.Permissions; using Atlas; using Atlas.Loaders; using BepInEx; using BepInEx.Logging; using FistVR; using H3MP.Networking; using Microsoft.CodeAnalysis; using Sodalite.Api; using UnityEngine; using UnityEngine.AI; using UnityEngine.SceneManagement; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyCompany("Packer")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("A universal team game mode library, comes with Team Deathmatch and Rush modes")] [assembly: AssemblyFileVersion("1.0.6.0")] [assembly: AssemblyInformationalVersion("1.0.6+eff0d6abe8317ed585811b8772e7a8cb8ece2620")] [assembly: AssemblyProduct("Packer.TeamsGameMode")] [assembly: AssemblyTitle("Teams Game Mode")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.6.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } public class TGM_FVRPointableButton : FVRPointableButton { public void OnValidate() { } } public class TGM_FVRPointable : FVRPointable { } namespace BepInEx { [AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)] [Conditional("CodeGeneration")] internal sealed class BepInAutoPluginAttribute : Attribute { public BepInAutoPluginAttribute(string id = null, string name = null, string version = null) { } } } namespace BepInEx.Preloader.Core.Patching { [AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)] [Conditional("CodeGeneration")] internal sealed class PatcherAutoPluginAttribute : Attribute { public PatcherAutoPluginAttribute(string id = null, string name = null, string version = null) { } } } namespace TeamsGameMode { public class TGM_LookAtHead : MonoBehaviour { private void Update() { //IL_0020: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)GM.CurrentPlayerBody != (Object)null) { ((Component)this).transform.LookAt(GM.CurrentPlayerBody.Head.position); } } } public class TGM_NameDB { public static readonly string[] database = new string[2888] { "\ud83e\udea6_mince_of_spades_\ud83e\udea6", "Meaty Chara", "Raging Veggie Dog", "SPAMTON G. SPAMTON", "Who puts stickies there?", "#QWMF-OG sizzle dizzle sam #FIXMF2", "$$Not@HotDogBot$$", "$Meat$ Jacklaggins", "(⚆ᗜ⚆)︻┳═一 -> -> -> u ded", "(uωu*)", "**HotDogWaterEnjoyer**", ":3 SausageCuddles O_o", ":3", ":D;)", "[BALLS] Hair, Eye, Meat", "[BBQ] LicensedGriller", "[BBQ]_xXPixelCrusher42069Xx", "[BUN]LostInSwine", "[CREAMERS] Unfilled Eclair", "[CZ] Colonel Sossy", "[DOG] Grill_Master_Flex", "[EDM] BEATmeatLOUDLYdisco", "[Exp1red] SosigGri11er", "[Flukey Bup]", "[FnC] ChDr-FILLD", "[GrassBandit] Mr. Rake", "[HDG] xXxToastedBunsxXx", "[HH&H]LaDaLaDaLaDel2016", "[HotWeenie]", "[Meat Grips] Two Drips", "[MEAT] grillin' and chillin'", "[MeatFortressMarket.meat] TeamGriller99", "[MRB8R] Mr. Bricklayer", "[OMW]-_XxMeatxX_-", "[POO] Fountain Technician", "[SG]MustardlyMustache", "[TRB]Furcas", "[XUSDER]MCHammeat962", "_(:3 」∠)_", "__a_hot___dog__", "__XxCRueldogxX__", "_ChickenFan427", "_M33tGlu-M@", "-_OtoNaShI_- ", "_RealFlaccid_Steak69", "_tenderiZZer", "-_the yellow dart_-", "_TheMeatWithin_", "_Wurstest_Weiner_", "_x_hotdogjar_x_", "_xXUBER_PIKSALZXx_", "{CRYPTID} 2-Armed, 2-Legged Sosig", "{G.F.A} Tom", "||[J. Hectic]||", "~~ \ud835\udcfb\ud835\udcee\ud835\udcf5\ud835\udcf2\ud835\udcfc\ud835\udcf1 \ud835\udd02\ud835\udcf8\ud835\udcfe\ud835\udcfb \ud835\udcf6\ud835\udcee\ud835\udcea\ud835\udcfd ~~", "-~=~-_Il|lI_XxX_t0by_XxX_Il|lI_-~=~-", "~buranyuu #SaveMF2", "~FURRY~WEEWEEINER~DESU~", "~MysteryMeat~", "“BOT Frasier”", "-+| GameCoach |+-", "++- Sosigcrates the Wise -++", "", "", "-=BLOOD_SOSIG=-", "-=Cole's Law=-", ">>MelonMagnet69<<", "∋━━o(\uff40∀\u00b4oメ)~→ DEVIL DAWG!11", "♥hotdog_girl_irl♥", "✧༺♥༻∞ \ud835\udcdb\ud835\udcee\ud835\udd01\ud835\udcf2 ∞༺♥༻✧ ", "007AgentFrankFurter", "00Xx__Biggr1ller_Xx00", "0scr_My_Wein3r", "0xBEEFFACE", "0xDEADBEEF", "10,000 bees in a hotdog costume", "100% Pure Trash", "100%AllBeef", "100%NotNamedByAce", "10001011101", "12 to 14 feral hogs", "1337dog", "1337p3pp320n1", "1337W31N3R", "15dogs17shoes ", "1911Fudd4714", "19QueenSizedWeiner80", "2002 General Meaters Corp Yuckon", "2012_frankgaming", "250 lb of Lean Meat", "2Frank_Fan_4_Life", "2frank2furter", "2theMEAT the BigFeet", "330PoundsOfFriedBread", "37 corn dogs in a row", "3d_boy", "404_uwu_not_found", "420_Glaze_It", "42nfl19", "4andahalflinks", "5 small rocks", "51Kills", "5fingers0fdeath", "5haBoingBoingMaster", "5inchfootlong", "69GodoG96", "69packagesofsausageonthewall", "700_MeatMaster_700", "750 bees in a trenchcoat", "80s Enjoyer", "8rounds10mags", "96_SkibideezNuts_69", "9thDogInThePack", "a burger", "a machine made of meat", "a modicum of sodium", "a real cat", "A Real Human Sausage", "A Seagull Named Potato Chip", "A sentient Hot Dot, playing Meat Fortress on Smeme", "a_boney", "A_Sophisticated_Frankfurter", "A1Lather", "A5 Swagyu Beef", "Abraham-Booze-Croozr", "absoloutewiener2026", "AbsolutelyMassiveSausage1234", "AceTheToaster", "AcidicChorizo398", "AConvincingCanofTuna", "Add1ct3d2C0d1ng", "Adnan_Martini", "Adult_viena_saussage", "afraidofhog98", "After Breakfast With SlimJim", "Agent Kickass", "aggelol08", "Aggro_stiff_meat", "Aimbot20324", "AimLikeIdaho98", "aint nothing but a hot dog", "AJ (Chorizo Guy)", "Al19144", "Alex the Hotdog", "AlexSnofden", "AlexSuperMeat", "AlfaHatdog", "Alfref", "Alivebacon", "All Natural Chicken Wing", "all sham no wow", "AllAboardTheCerealBus", "AllAmerican1776", "AlmightyHotDog", "Alpha", "alvin227778", "AlwaysPopMedic", "AM_THAT_DOG_IN_YA", "Amelia Earheart's Femur", "amongmeats", "An Uppercrusty Gentleman", "an0nymuuustard", "AndDon'tCallMeSaiOua!", "AndreTheOrganic", "Angel R3", "Angeliscool1", "angryvideogamesausage", "AnInferiorMotive", "Anji Meato", "AnneDewey99", "anomalocarislover123", "Ant0n’sRightSh1ftK3y", "AntonHandAntonFoot", "AntonHotdog", "AntonPls ", "Anton's the Best <3", "Antwurst Hand", "Anyone here roasti..", "Apakafranks", "aperturesentry156", "ApertureSpy187", "AppleFrank", "AqueousHotDog", "ar_rustbowl <3 my beloved", "ArbiTrationsWeGotDaGreements", "Armored Fencer", "Armoredhotdog99", "ArmorHotDawgs", "arsonistsCookout", "AshyDisaster", "AskMeAboutMyself", "AstralDog", "AstralMeaty", "AthensGrease", "Atomeatku", "AtomHamBody", "AtomicHotDog", "AtomicToast", "ATubOfWeiners", "AuguSosigHS", "automatickilla47", "average 2fort fan", "Average Shelf-Life 2 Enjoyer", "Average Skub Enjoyer", "Average Sosig Murder Enjoyer", "Average_Brody", "AverageHotdog", "AverageRelishEnjoyer95", "Avisance-Avisée", "AwareDogger24", "AyrChan", "B_bakeddogs", "B0ck0nmyB0wlSchnit", "B0n313ss", "b0n3less__WYNGZ", "B1AD3", "B33F B0!", "B3N_Str0k1n2003", "BabyBacker Premium(1)", "backson jale", "Bacon_for_lif3", "BaconBits", "BaconsnaxxThe1nd", "Bad Boe Jamo", "bad to the bone marrow", "Badgwurst", "BadWiener_Real", "Bakin Bits", "Balatr0", "baloneycheex", "Banjo.Wurstman", "BarãoPequeno", "BarelySeasonedHotweiner", "BargainBinBeef", "Barnibus Flatulence", "Barron Von Bologna", "Barry Bratwurst II", "Based Stock Weapon Enjoyer", "basil", "Basted-N-Grilled", "BathroomBreaker27", "Battered, Slathered, Fried", "battery bill", "BattlFire", "BauBau12", "Bauxsage Mann", "bbnomu5t4rd", "BBQ_N1NJA", "BBQBenson27 (1)", "BBQrusader", "Bean Soy", "BEan", "BeaniesAndWeenies", "BeaniesNWeenies", "Bear With Meat", "BeatableMeat", "BeatMeater069", "Beef ‘Frank’enstein", "Beef Buster", "BEef", "Beef?", "Beef_Bus", "BeefBoi37", "Beefcake", "BeefExecutiveOfficer", "BeefFrankGrimes", "Beefiest²", "Beefin’ it!", "Beefmiaster1969", "BeefSlayer38", "BeefSupreme_2003", "BeefyGreens", "Beefyonce", "Beeph", "BeesInMyHotdog", "Believer", "Ben_DiWang", "BenTheBratwurstBoy", "bere_skk1234", "Berzence00", "-bestest-weiner-around-", "BetterMeati", "betterthanU123", "BetweenTheBuns", "Big Boned Broth", "Big Chingalinga", "Big Dumb Sausage Fingers", "Big Fat Meats Man", "Big Jagerwurst", "big meat", "Big Stink", "Big_Franking_Gun93", "big_porknbeans", "bigbratwrust@Mmail.com", "Big-Brolic-Black-Man_78", "BIGBuckleBilly", "BigDog473", "biggiedawgs42069", "BigGreasyBurger", "biggus sosigus", "BiggusWeenus420", "BigMeatEasy", "BigMeater2005", "BigMeatyClogs", "BigShmeat", "BigWiener", "BigYackHubby", "billAlbertman19sevendy8", "Bill's Desktop PC", "bills", "Billy Big Meatballs", "BiltongBoet", "bimbo basketball", "Bing Soy", "bing soysig", "binky dinky", "bizkit-and-butter", "bizo", "Bjúgnakrækir", "Blanketed_Pig69420", "Blobscura", "bloodgush", "BlorpLord1989", "blueamajig", "BlutFurDaBlutWurst", "BndrBndngRdrgz", "Bo Ziffer", "bob mcweinerton", "Bob", "Bob6", "Bobby Rook Rook", "BobertTheBratwurst", "bodhifrank57", "Boiled_And_Bunned", "Boingus", "bolognashorts", "Bon", "Bonafried78", "Bondiola", "BonFire-Roasted Dawg", "bonk3432", "Bonkatron", "boohamburgers", "BoomstickBuddy23", "Bootle", "BopDog47", "Bores Hedd", "BosnianMeat69ez", "Bottluver", "Boudin Barry", "BOZOPHOBIA", "Brad_Werst", "braisedPork1999", "Braising Groaner", "BranFlakes", "Brat Pack3r69", "brat smoker's ketchupula", "Brat(wurst) Summer!!!1", "Brat_Boy32", "Brat_swatter", "Bratbunbrah39", "BrathurtsYourAss", "BratPage", "BratToYouBy", "BratWorst", "Bratwurst Benny", "Bratwurst_But_Good", "Bratwurst_ConquerorOfMeat", "BratWursty3412", "BrautwurstBilly442", "Bread Bandit", "Bread Rot-Dog", "BreezyMeaty", "BrennanDogs", "brick", "Brickwurst", "BrillionMcgrill", "Brimget", "Brine enjoyer", "Brioche_Bard", "briochemasterr", "Brisket <3", "Brisketspace68", "Brok3nH0me", "BrokenCasing2001", "Brosausag", "Brot_The_Wurst", "browned2Perfection", "brrraapwurst69", "bruhwurst", "BruteForceBratwurst", "Bryan Frankston", "Bucket of Chicken", "Bucketlord-6000", "BuckFiftyDogAndDrink", "Bug_collection", "bullets", "BUM MISSILE INCOMING > > > [|||||||||])", "Bun_Filler2005", "Bun_Hound22", "Bun_master69", "BUN_SL4PP3R_420", "bun_smacker69", "BunBattle47", "BunBeliever2", "BunFiller", "bunger", "Bunger", "BunLover341", "Bunnings Snag", "Buns and Guns", "buns_buns437", "Buns_N_roseS", "Buns4Lyfe27", "BunsOfSteel2004", "BunWearer305", "BunzR4Losers", "burgadaboss284032985", "Burgermiester The Judgiest Meat", "BurgerToDog:3", "Burgstew", "Burnt masa", "Burnt_Rawnolds", "BushWookie", "Buster Cherry", "Butcher Pewtis", "BUYSKINSHERE", "buythebaconburger", "C0ld_Dog", "C0ltyM@n2000", "C4rN1V0r35414D", "Cabbage man", "Cadmium flavored mustard", "CaelumMeatyCop", "CalidumCanis", "callendog", "CallMeJK", "Can of Two Links", "cancer patient", "cannedham", "Cannedmeatman143", "cant_cross_these_hot_buns", "Captain Frankfurter of the Luncheon Brigade", "Captain Poopdeck", "Captain shoetfurst ", "Captain_Bratwrust", "CaptainCurrywurst", "Captian Franky", "carhaver123", "CARNE CARTEL", "Carne_DIEM", "CarnivoreMeateater900", "Carp", "CarvoHottano37", "CassieTheGoblin ", "Casual June-bug Enjoyer", "Casual_Wiener", "CatfishPUNcher", "CEO.CSFT33", "ch1p0lat4", "Chaosmeat 25", "Chara", "Charlie Chorizo ", "CharManDrip96", "Chas1ngDaBag", "CheapTrades", "chector", "CheddarChonk", "Cheeki_Breeki_hardbass_", "Cheese master", "cheese_lover19", "cheesedawg", "CheeseLover343", "Cheesesteak", "Cheesie Noofle", "cheesy hotdog enjoyer", "CheesyBob", "cheezkid26", "Cheezuschrist3", "Chiakichop", "ChibiHaleUwU", "CHICK'N WING < < < ", "chien-chaud.451", "ChienFraud", "Chigao_RED", "Chili_Bean_Ween", "ChiliBlanket", "ChiliJar", "chillpillgriller", "Chimeradog", "ChippyDogg", "ChonkyHonky", "Chorizo Hombre", "chorizo.gonzalez.2009", "ChorizoCorpse666", "ChorizoJoe", "ChorizoMendez2005", "Chorizo-Weirdo", "ChorRizzo", "Chowdy", "Chris_Hamsworth", "Chrispbac", "chruck jriver", "Chubbs", "chubby_ray", "Chuck McGrill of ham & ham, mcgrill", "ChuckChuckChuck", "Chuckleberry_Finn", "Chuckmaster189_0", "ChuggaBoom", "Chuggy D Taterson", "Chumborg", "ChunkE1", "ChunkN0rr1s69", "Clam_Meowder", "ClappingSausage", "cleangrilllines419", "Cloakerson", "Cockywiener2423", "CodeBreadDev", "CodyTEM84", "Coffee w/ Hotdog Water", "coffeeflavoredsausage", "Col.Mustard", "Cold Cat", "ColdMeat", "ColeusBratwurst", "Colonel Mustard #saveMF", "ColonelCasing", "ColorMeOrange447", "Comical Michelangelo ", "Comimeat Gnome Chompski", "coming4ufast", "CommanderInBeef1947", "ComplainingWeiner98", "completo.gonzalez.2014", "Concanno", "Concerned Saucissons", "ConcreteSandwich", "Condiment Flinger", "CondimentConsumer63", "CondimentKing22", "CondimentQueen", "Connel Saucisson", "CookedWthCloves", "Cooldog1", "Coolen_the_real_Kulen", "CoolKielbasa", "Corgiboomstick", "Corn_Dawg", "CornCruncher834", "CorndogKidBB", "CornedCarnage", "Cornholed Beef", "correct snack posture check", "CosmicVertigo", "Count Brat", "CounterStrikePlayer47", "cozy", "CPL. Meatic Gamer", "Cpt.BurntSosig", "cpt_wiener24", "Crab_raccoon ", "Crazy_Steamer", "CrazyLemonCow", "CrispinDrawer", "Crumpstacks", "crustacean.lover1992", "cult of the loaf", "CumberlandCrusader", "Cured Medic", "CuredAndArmed", "CurierSix", "Currywurst_Karolin", "cutecutz2", "CuttinMustard", "Cyanidebox", "Cybermeat2077", "Cyberobo", "CyberSosig.27", "D.Albertson", "D.Dickson", "D.Limmy", "D.T. Kielbasa", "da prince of ASS", "da_WURSTpl4y3r", "DaBestMeatHead", "Dad Apparently", "DadWithASpatula", "DaEpicWeinerUK", "DaHotsosigSr", "DaHotterSosig", "Daiana~!", "Dale__Soder", "Dallas", "Dangerdogattack #FixMF2", "danthesosiged", "Dat_Wurst_Auge", "Dave the 5th", "davepro4675", "DavetheDawg", "David Sausage", "ddrandom", "Dead Meat", "DecryptedSausage", "Deerlover", "Deez_NutsHD", "DefinitelyNotAnton", "Deity Dog, playing Meat Fortess on Scheme", "Delicious Borscht Soup", "DeliciouslyMalicious", "DemoBrot MF2", "DemoDog Gaming", "DemoHam", "DemomeatMF2", "demospammer2004", "dengelmeat", "DEPLOYABLE WEINER (folded)", "Deputy Pilk", "Der Frankfurter", "derce (certified furry)", "Derce P Hale", "Dermit The Dog", "DerpGriller", "devilhunter96240", "diabeticdawg", "Dick Justice", "Dick_Joke", "DickeWurst_DE", "DieWurstSpieler", "diggedymanbio", "DiggyDogger46", "digitaldawgz1", "DIJON_SANDERS", "Dingus McStinkyweenie", "DingusBingo", "dinke", "DiottlesT.Chaudboy34", "dispenser", "Dispenser", "DJ Sausage ", "DKmeats", "DM_ME_UR_SAUSAGE", "dnaH notnA", "Dockside Chefwiener", "Doctor Meat", "Doctor Sausage", "doctor sex", "DOCTOR SEX", "Doctor Weenor", "DoctorHoffmann", "Doctormeatfector", "Dog_Support_44", "Dogdestroyer2008", "dogertk925", "DoggiTron", "DogGoneDead", "DoglickkaProxy_1337", "dogman2807", "DogSawce", "dojodog", "DoktorDoner", "DönerSquat", "DongCabana", "Donut_Crimes", "doublesidedsosig", "Doug", "DownFound", "DownUnderDog", "dr sex", "Dr. Beef", "Dr. Bodacious", "Dr. Dinky Diddledoot", "Dr. Fill(ing)", "Dr. Forcemeat", "Dr. G", "Dr. Gordo Meatman", "Dr. M347H00K", "dr_doofenmeatz", "Dr_Fiddlemeat", "Dr_Wheiner [B1GM3ATZ]", "DrBockwurstX", "DrBunsworth", "Dreadmoth", "DressedDog09", "Druggedoutpennokio", "DrXtrawide", "Drywall Consumer", "dubspool", "duck_everyone", "duckosz", "Duduescho2", "dumbledork", "e_soupsage", "EagleWolf404_UwU", "Edam-Porkentine", "EdibleMeatBike21", "Eeek’em", "Eggsy", "eine-knackwurst", "El Perro Caliente", "El_furro", "El_Guey", "EL17A", "ElderlyClamConnoisseur", "ElectricBloodDog", "ElectricMeat112", "EleshNyan", "EliteAdmin1-Smeme", "elleirGab", "Ellie the Newfie ", "Elmer-J-Wurst", "emeaticon_generator", "Emmeat", "emo meato", "Enemy Gamer", "EngieMain2005", "engineer gaming", "ENGINEER GAMING", "engineer sossigaming", "EpicSausage134", "Epsilon2428", "Epsypolym", "Ernie Big Buns", "Et3rn4l_F4rt", "Eugenius Marganius Carolius VI", "EvanDaGr8", "evian ", "Evil Maniac", "Evilbread", "ExcessiveBananas", "extrawurstesser22", "ExtremelyRareSosig", "EyeLinerMoustache<3 [M3AN W33NS]", "EyyItsFrankHere", "F2000_Enjoyer", "FairSosigGamer2009", "Faller", "Falukorv ", "Fartbuckle3000", "fartsmella420", "Fartwurst77", "father, i hunger for sosig", "Fathommmm", "FattyWeaponsDog", "faulty roller", "Feathers217", "FEFerino", "Felino the Wurst", "FembaloneyFurry", "Femboy_Hot_Dog07", "FeralCrustacean", "FernieDog", "Fidel_Cashflow", "Finn the Frank", "FinnyMalay", "First to MEAT", "Fishsticks", "Fishy", "fl31schW0lf", "flameshotdog", "Flammenweiner", "Flan56", "FlavoredSausage", "Flootfurter Winwurst", "Fluffyboi247", "Flumpcum", "FlyAwayNow", "FlyingSausage", "ForestGriller", "FormanFrankFurter5813", "Forstern the Hotdog", "FortressGrillMaster", "FortXlover_2006", "FowlFatale", "fps_chilidog", "Fr4nchAreTh3Wurst45", "Frank Franky Franklin", "Frank Bisque", "Frank Castle (The Bunisher)", "Frank", "frank.bratwurst.2008", "frank.mayer.2009", "Frank.Winney.2024", "frank.wurst2004", "Frank_Farter6989", "Frank29443571", "FrankDaFurter", "Frankenflirter", "FrankenSpanken", "FrankenWannie", "frankfarter543", "FrankFighter", "FrankFlanker67", "FrankFurter", "FrankFurtress", "Frankium87", "Frankivenist42", "FrankMustard45", "Frank's Blue Hot", "Franks_Foot754269", "FrankTheFurter", "FrankVC", "FrankyRedHot07", "FrankzerGuy", "FRAYDIA", "Freaky Funtime Frankfurter", "FreakyTomWidWorst", "Fred", "freddifield", "fredwurst736", "free2meat", "Freeside Thug", "FriedChickenIsServed", "Friendlyguy", "friendsforever", "FriggenGamerFry", "Frodolph", "Frogdog", "FuddgedHotdog", "FuddgeSchlong", "Fuettadevil", "FullBeefFrank", "FunkMasterP", "FunkySmellingDogs", "furredsosig_uwu", "FuzzyDog(mold)", "Fy_Kable", "FyRE_GRILLED", "G I L B E R T", "G0RB1N0-LVR6969", "Gabe Chewell", "GabenNewman", "GabeNoodle62", "gamblingaddict568", "Gamer123", "gamerDad553", "GamerGrill", "GameyGorbinoGuppy", "Gammon-dorf", "GarfeldMeatMambo8664", "gargantuamwilliam67", "Gary Shawarma", "GaryTheGlizzy", "Gas Propelled Sausage", "gas-cooker9507", "Gaseous Clay", "Gasoline smeller", "Gaspassed", "GawkyDevotee86", "Geekz_Saxton_Wurst", "GELATO b3anny", "GemOfAWeiner", "General Cornobi ", "General Mills, Captain Crunch, Colonel Sanders", "GeneralWienobi", "Generic_name_here", "GENTLE MEATTE of LEISURE", "genuineanger", "GeorgiaBot", "Geroy The Serdelki", "GET GOOD GET LMAOBOX", "GETSUM T_T", "Gettin chili", "girlweiners sporting goods", "GiveMeYourMeat", "gl1zzy_bl4ster", "GlisteningGlizzy_HD", "glitch4094", "Glizzy_Goblin", "glizzy_guzzler", "glizzycranker25", "GlizzyGlizzGlizz", "GlizzyGoblin", "GlizzyGoblr", "GLIZZYMAN05", "glizzymogs", "Glorbo The Blobulus", "glorified roaster", "Glorified Sosig Without Legs", "Glorpulous Glizzinator ", "Glow-in-the-dark sausage", "Glump Jorkin", "GMEAT Roleplayer", "Gnomecode", "gods-buffalo-dip", "Godtoh24", "Gogle", "Gold_1", "Golden dogs", "Goldmamba1983", "GoldStachu", "Goober", "Goobersmooch", "GOOFHaggis", "Gorb", "Gordon Freemeat", "Gordon_Freemeat1998", "Gordown_Freefeet", "Gorge Foreman", "goron", "Gossig ", "Got Beef?", "GotThatDogInMe", "GotThatDoginMe332", "GotThatHotDawgInMe", "Gozorpian on planet I01-E79 ", "gragglebob", "GramOfGroundMeat", "GrannyGlizz", "GravyGod", "greasedNseasoned", "GreaseFire98", "GreaseMeUpInside", "Greasy_Griller_Glizzy", "GreasyJim (No sound)", "GreatestNoobWorstPro", "Greenman", "GREENSAUCE", "Gregory The Meat", "Grey Focaccia ", "Grey Poopon", "Grey Zarcovski", "griddlemaster", "GridHouse (idk i have no other good idea)", "Grill Issue", "Grill_Sergeant101", "GrillbertGotfried", "GrillBill", "GrillDog", "GrilldogSKIEZ [trade]", "Grilled Newell's Son", "grilled", "GrilledOut", "GrilledShmeat", "griller", "Griller9000.3", "GrilleronCommand", "GrillGamerLee23", "GrillGod", "GrillinChillin57", "Grilling on an i7 4790", "GrillinYouSoftly", "Grillion", "GrillKng", "GrillMaster", "GrillMaster69", "Grillmeowster Kitty (\u02c3ᆺ\u02c2) ~nyaaan", "Grillpolser", "Grills Love Me", "GrillSavvy", "GrillSeargeant", "GrilltasticFrankfurter27", "GrillThemAll", "GrillTitanite", "Grlln", "GRNDog", "Gronchinator", "Ground Sergeant Mincer III", "GrungusMcMeat", "Grunk ", "GrunkleDane", "GubTheSausmage", "GucciSosig24", "Guest_19967435", "Guillame Bratislava", "GulDukat_2370", "Gun Jeebus", "Guns and Buns", "GyroEnjoyer", "H@ggisMAXXING888", "H0tD0gTr@nsGirl", "H3FAN4973", "H3VR M1911 Classic in Grillhouse XL", "h3xed", "h4mmy", "H8ckerboi69", "half baked haranguer", "Ham Stroker’s Ejacula", "HamBiscuit", "Hambone", "Hamdalf the Pink", "Hamdog Harry", "HaMedik", "Hamfred Wilderbeef", "HamimeGirl54", "ham-o-war02", "HamsBond", "HAMster", "Hamus_Aran", "HanCHURISOLO", "Hank J Wurstleton", "Hans_Porkensaw", "HanzDerWurst", "happyfre", "happyWeiner1234", "hardcoregamer123", "hardcoregamer2000", "HarrisonDaHottiedog", "Hawt Dawg", "Hawt_DAWG", "Hawtdawg2009", "HawtDawg69420", "Hawtdogg ", "HaX0rHarry", "HDogfather03", "Headless Horseman but w/ a head", "Heathcliff Hotdog", "Heavy", "Heavys sandwich meat", "HeavySans", "heavys-bigbrother-heavier", "heavysosigsguy", "HeavysSandvichMeat", "HeavyWeightGuy", "Heckler & Peen", "Heihachi Meatshima", "HeiroPyroGlyph", "Helldogger", "Hellwalker", "Hernando.Fertinez187632", "HexMan", "HgDog", "hH_Sturgeon_General_Hh", "hiccup", "Hickory Farms Party-Size Signature Beef Summer Sausage, 26 ounces | Great for Snacking, Gifts, Entertaining, Charcuterie, Ready to Eat, High Protein, Low Carb, Keto, Gluten Free, 100% Beef", "High fryer", "HighSteakesPorker1649", "HighTierTrader | Scrap.MF", "HinglemcCringleberry", "Hippososigmus", "Hmaburger Harmer", "Hoard of hungry wasps", "hogger19", "Hogmaster_700", "HOGSLICE", "hogwell", "Holy Mother of a Weeiner ", "Honchdog", "Honk Hull", "Honkleshoe42", "Hooskey", "hoovymain368", "Horseless Headless Hotlink", "HorselessBunlessHorseman", "HorseMeatMan95", "Hosiko", "Hot Dog Gaming", "Hot Dogman", "Hot Log", "Hot McDog II", "Hot Pog", "Hot_Diggity_Dog137", "HOT_MEAT_BALLS (yeowch)", "Hot_The_Dog", "hot1337dog", "Hotdawg", "HotDawg48", "HotDawnSauce", "HotDiggityDog", "Hotdog McCoolgal", "Hotdog with a Hat", "hotdog_02.mdl", "Hotdog_eating_champion78", "Hot-Dog_Flavoured", "HotDog_Gaming9001", "HotDog_of_DESTINY!!!", "HotdogEater456", "Hotdogger99", "HotDoggersonRupturer76", "hotdoggod", "hotdogman35", "hotdogmaster2000", "Hotdogowner9000", "HotdogSlingr9000", "HotdogStory Enjoyer", "HotdogTheGreat", "Hot-dogtor meat", "HotDogWaterEnjoyer69", "HotdogWaterplant", "HotDogWaterSteamPower", "Hotline doggy", "hotog", "HotRodHotdog", "HotSauceSteve", "Hottest Dawg", "HottestDog", "Hottestdog03", "HottieMcBigDog(real)", "HottinOnMyDawg", "hotwiener69", "howoftentamasopo?", "Hoytdawg_425", "HTDawg", "huge guts", "HUH?", "HumanFingers", "HUMANpERSOn", "humans_arent_real", "Humblewiener34", "HundredHoldGuy", "HungryHomeInvader123", "HvH Pro", "Hyperketchup", "HyperMeat", "I AM HURT", "I AM THE DOG LORD", "I do atest this meat is fortress", "i eat beans and brat on toast", "i tripped over my buns", "I Waterboard Wieners", "I. C. Weiner", "I_am_the_spy", "I_am_the_wurst", "I_need_hat64", "I’m the Wiener", "I’ve got nothin", "iamblackpudding", "IamMeatMan", "Iamnotsosig", "Ian Meat Column", "IBSausage", "ICantPauseItMomItsOnline", "ICEdog", "Icei dog", "IcyFang", "igotbunshon78", "iiamfranker_dealwithit123", "IIiIIlSTICKIIiII", "IIIlllIlIllIIIIIl", "iiVoidScout", "IL0V3MYCAT", "iLikeBigBuns", "ilikebiggunsandicannotlie", "ilikgunsalot", "ilovef2000", "ilovejesus69", "I'm Naked", "I'm not a vegan", "im_gonna_mustard_everywhere", "Imakethesecretsauce", "ImBatWurst", "ImGonnaBeFrank", "ImmGregnant", "ImNotOJImOG", "ImSleepDewidered176", "in the meat", "IndominusMex", "Infinite Meat Machine", "Info Meat", "InsufferableTryhard123", "IntenseFunkid", "International House of Sosig", "intestinalWARRIOR", "InvertedWeenie", "Isomalt", "Italian Goose", "iTaLiAn5aUsAg3", "IThrowTrashatyourDog666", "ItsJustHaxRelax@meat.video", "ItsReallySausage", "ItsTheGhost86", "iveseenthetruth123456", "IWasaTeenageVegetarian", "Izutsumi", "Izzy of the Glizzy", "Jakes_Meat", "JalfreziYum3", "James Boudin", "James Cucumberland", "JamesMeatster", "Jane_Dough", "JayKyoomin", "jdrandom", "jeb.the.hotdog.2016", "Jeffapepperoni", "Jefferson Tallpipe", "Jelité.Chorizales.2009", "Jeremy Elbertson", "Jerkp0rk", "jermeat985", "Jermeat985", "Jermeater985", "jerriatric", "JerryRigAR", "Jex (gooey)", "jim from accounting", "Jimbo The Jumbo Dog", "JimBob", "JimDog ", "jimmy dog", "JIMMYDOG THE DESTROYER", "JJluvzMeat", "Joe Nuts", "JoeSosig", "JoeyChestnutGOAT", "joeyjortison", "Johaan Glock", "John Bologna", "John Charmack", "John F. President ", "john fortress ", "John Hardmeat", "John Hot Dog", "John hotdog ", "John Hotdog (real)", "john long hot dog", "John Meat Fortress", "John Meat", "John Meatfortress 2 ", "John Meatsoft", "John Noscope", "John Porknoodle", "John Weiner", "JohnMcMeat", "JohnnySilvermeat", "JohnPizza1984", "Johnthedog2137", "JohnWeinerJr52", "Jonathan Burgerson", "jonathan2014", "JoseHotdog2007", "joseph.shmeat2009", "josh", "JosigJunipper2009", "jozegonzalez2004", "jrysreal", "JuicyKisses", "Jukky la Snausage", "Just a BLU Fume", "justanothermeatcylinder23", "JustaPuddleofHotDogWater", "JustinBeefer", "Justkeepgrilling99", "JustWASD", "K0RV", "K3tchupLover39", "KameatkazeF0X", "Kanted_Kielbasa", "Kay_Din05", "Kebabit", "keethjiu234", "Kelvin BunWick", "KENTUCKY FRIED sausage", "KerehlPlays", "Ketamine Kitten", "ketchup catcher", "Ketchup Vs Mustard Truther", "KetchupNoMustard01", "Kevin", "khepera_ptah", "Kid Named Weiner", "Kiełbasożerca97", "Kielbasulous Mortadella", "Kill Basa", "Kill_Basa", "Killbasa", "Killbasa666", "Kilroy_Kielbasa", "KimberMeatla", "King Meaty XVI", "King Poobis", "King Quirk ", "King Wiener the III", "King_of_the_Grill", "King_ofMeats1951", "KingDöner", "KingofGoats", "Kingshound", "kinimi", "KiraTheDogQueen", "Kirb the Kielbasa", "kittehpowah12", "Kizilejderha ", "klobá1klobá", "Knakworst", "Knobhead", "Kolbasa443", "Kookedkebab ", "KookyKabanos_Slider", "Korkenschuetze", "Korvz_Swe", "KosherFootLong", "KR1LLZ0NE", "KR4N5KY1337", "Kyle_Meatstick", "L0rdBr@t", "L1ntL1cker", "L33t_MTFoxtrot_xX", "L3TrollM3st3r", "Lambshank", "Lance_Corporal_Meatly", "Lapua Cheong ", "Laryngton2137", "lazy_river_dawg", "LazyPickle", "LazyPorkle", "Le Bon Toutou", "Le Lardon", "Lebrat Jausage ", "lecat:)", "LeeroySteakins", "Left Beef", "Left4sosigs", "LegMam", "Legobear", "LemonSuckinWeenie", "LemonZest", "LengthAndGirth", "Lenny", "lerge!", "LethargicLavender", "Level 1 Crook", "LezizSosis", "LibertyLover101", "lick. ", "LigmaBuns_UwU", "Lil $mokiez", "lil_smokiez", "LilSmokie420", "LilTimmy", "LimblessPorkCreature", "Limbo Champion 2980", "Linkdestroyer68_", "linkgitemate noob", "LinkLurker", "Linkoln Porjk", "LinksALot", "LiteandFruity", "literal_spambot_3000", "Literally_the_best4534", "LithiDawg_320", "Little_Richard101", "LittleKetchupski", "LittleMeaty", "Liver83_", "Lizpeg", "Loaf", "LocalDawg", "LocalHero345", "lolcritrawpigs", "Lone Dog", "Long Dog of the Lawl", "Long N Floppy", "Long_thick_hotdog", "LongDog96", "longlongmeat", "LongMeat&CreamSauce", "Looking Cute in my Buns", "Looking4HotDills", "LookingforaBun04", "Lord Porkington", "Lord_Chicken", "LordSausageX", "Lou Kaniko", "LoveWienerz123", "LowHealthScout", "Lumiloom", "Lunch Lady Supreme", "m0rtaDz", "m1918man", "M34T-B01L3R", "M3AT MAN!", "M3AT_Y0UR_M4KER", "M3atC0ins4Sm3meCards", "M3ATK0P", "M3atTr1cycl3", "m3atyceiver", "M3ATYMA5TER", "M3gaFr4nk", "M4S73R_M347", "mad cow disease", "MadamMeat", "MadDog 100% Beef", "Mainplays", "MajesticWeiner", "make meat, not war", "MakeSausageBecauseScience", "MakoQc", "malboro smoked sausage", "Malcolm", "Malenfurter", "Mamsnrhbr Chehfde", "Man", "ManagersSpecial", "MantonFist", "ManwichCannon", "Máquina de hacer chorizos", "MarchingMeat95", "Mark “The Rattlesnake” McCarthy", "Markustard_McCloud", "MarrowEscape", "Massive_Knackers", "MassiveMeat2581", "master meat", "master_mustard", "MasterBeef_", "MasterMikeMustard", "Maurinhovv", "Mauro_Lyra", "MaxTehFox", "Maxwell Streetmaxxing", "MayoLover420", "Mayor-of-Meatshire", "McWang", "Me", "Me@t_muffin_420", "me@ti_boi_32", "MealTeamSix", "MeanieWeenie", "Meat Batter", "meat beat Pete", "Meat Crusader", "meat delivery ", "Meat Destroyer 42", "Meat McDog", "Meat ReNewell ", "meat speen", "Meat Sweat™", "Meat Whacker 9001", "MEat", "Meat.i.am", "Meat_Fortress_2_When", "Meat_it", "Meat_Maniac18", "Meat_Stikk_2038", "Meat’em", "M-E-A-T-1989", "Meat4 sherman steak", "Meat4UrMeaty", "Meata_Grill-e-alis", "MeataCanis", "Meatager_27", "Meatalangelo", "MeatallicaFan04", "MeatallicaFan1991", "Meatanator9", "MeataPara", "MeatAssas1n", "meatbag for heals", "Meatballer", "MeAtBalls", "MeatBeater420", "MeatBeater47", "MeatBerry", "meatboy420", "MeatBright", "Meatburn", "MeatCake", "Meatcetera", "Meatchete", "Meatchronicity", "MeatcicleMain42", "MeatCreature65", "MeatcycleForTwo", "MeatDealer69", "MeatdokaSosigpunt", "Meateater29", "MeatelSevenfold", "MEATeorologist", "Meater Porker", "Meater_Chicken_from_Famine_Hay", "MeaterBeater", "MEATERBREAKER", "MeateryBeatery", "MeatFeast", "MeatFilledCoconut", "meatfortressalt@griller.com", "MeatFortressClassicWasBetter", "MeatFortressEnjoyer2024", "Meatfreak15", "Meatfrid", "Meatgaming", "MeatGibber69", "Meatgineer Gaming", "MeatGrandeur64", "MeatHongo", "Meathunter66", "Meaticles123", "Meatiest_Man", "Meatik", "Meatilda", "MeatingFortess", "MeatInUrBunz", "Meatioso", "MeativusGreendog2675", "Meatkhail Gorbachev", "MeatKipster", "Meatless Cretin", "Meatliam", "MEATLORD", "MeatLover58", "meatlovers pizza #FIXMF", "Meatlover's Speedsta", "MeatLovr04", "MeatLP_04", "MeatLuvr", "MeatM@ster", "MeatMaestro", "Meatman", "Meatman203", "meatman665", "MeatManiac", "Meatmann Jones", "MeatMann", "MeatManTriesHisBest", "MeatMasher43", "MeatMaster", "MeatMaster93", "meatmess", "Meat'N'Bone Kingdom Fan", "MeatN'Greet", "Meatnomancer", "MeatOddity", "meatonmybeat", "MeatPacker57", "MeatPhil", "Meatphis_Tennessmeme2006", "MeatPie", "Meatraves420", "MeatRider59", "Meatrupturer99", "Meatsauce", "MeatSeeker211", "Meatshire ", "meatshucker99", "meatsicle", "meatsmith", "Meatsmith", "Meatsonator :3", "Meatsonator", "Meat-tacular ", "Meattaton", "MeatTerm", "MeatTheMeat619", "meattheNEET12345", "MeatTheSniper", "MeattsburgRare99", "Meatwater", "MeatwAve", "meatwizard985", "MeatXXMuncher", "Meaty mc MeatFace", "Meaty Melvin", "Meaty Mike", "MEATY SHAKO FOR 2 REFINED", "meaty_gonzalez2009", "Meaty_Marley420", "meaty_mc_meatface89", "meaty_mcmeatyface", "meaty0706", "MeatyAbstraction", "MeatyBobby13", "MeatyCadet", "MeatyChunk", "meatyD", "Meaty-fanatic47", "MeatyFrankfurter2015", "MeatyGoodness69", "MeatyLobster76", "MeatyMancer", "MeatyMatt34", "MeatyMonth27xx", "meatymoonboom", "MeatYouInHell", "meatyrandom", "MeatySniper_420", "MechanicSharkie", "Medicinal Sourkraut", "medicsimp77", "Medik", "Medimeat", "MedvurstFaan", "Meer Park Water Bottle", "MELIKEFEET", "MEMMELS", "meow", "MERASWURST!!", "Mercweiner69", "MetalArm69", "MetCeature65", "Metholox", "MF BOOM", "mf_sosig_chat_name_n_1622", "MFFan73", "MFgriller!LIVE", "mi amor es perrito calientes", "MicrowaveHotdog", "MiddleOfClubSandwich27", "miguel.sanchez2008@meatmail.com", "Mike Hawk", "Miles_Edgewurst ", "Milk shack", "milkmeat", "Minami", "Mince_raft84", "minos prime", "MistahCheddah ", "MisterMeatster", "Mochfork", "Modest-Sosig-Enjoyer", "moistsalami69", "Moldy_sausage_68", "MomsBasementWarrior", "moms-meaty-man", "momweinerer666", "MOOJIdeSNOIPER", "MOOJIdeSPY", "MooKrataDeng555", "MoonMeat203", "MoonsOVERhammy", "Mort", "Mot", "mountain Bill", "mourningdew", "Moustache.Wearer", "mr cat forth (non spam)", "Mr Funny", "Mr Slommy", "mr weiner the keener cleaner", "Mr. Calm", "Mr. Cheddar, disgraced PHD", "Mr. Meat", "Mr. Soyriso", "mr.wannabun", "Mr_Cockle_doodle", "MrBigBrisket", "mreow", "MrFisterTheHamTwister", "MrMcSosig81", "MrMeat215", "MrMeatlasses", "mrmeet12345so6", "MrNoArms", "MrPancake", "MrPotatera", "MrPotatoes", "MrSaucinator", "MrSkill-andis", "Ms. Meatstick", "Ms. Sosigtons", "MT SOSIG", "MT2 Real_Sniper_20", "MU574RD_M4N", "muhstahd_mann", "MumuIsPan", "MumuIsSosig", "MurdurMeister", "MURRZC@", "MuscleMansMom66000", "Must3rd_dr1nkr", "must3rdGlasses", "Mustard hungry 1111", "Mustard on the Meat", "Mustard Thuringer Grease", "Mustard, Esq.", "mustardenjoyer", "MustardEnjoyer", "Mustarder Sauce", "MustardForever87", "MustardGuzzler", "MustardMaverick", "Mustard-Relish-Enjoyer-2005", "MusterdMaker69", "Musteredup_someMustard", "MydadistheGronch", "MyLiversTheWurst739", "Mysterious Sosiger", "Mystery Meat", "Mystik", "N0nIceCreamSundae-순대", "Nakkisormi", "NameDisplay1123", "NapoleonGrill4", "NateTheWeenieDawg", "Naweh", "Neubi [F2P]", "NewAndImproved!", "newbie2015", "Newbiewiener", "NewFromTomico", "Nezumi", "Nice Nate", "Nice try Anton I'm not doxing myself that easy.", "NiceGuyNed :) ", "Nicetomeatyou", "Nigel Nutmeg", "NightSet601", "NinjaDog", "Nitrate Studios", "Nixdoggo2650", "No.1 fry main #ReheatMF", "No1ComboNoOnions", "NoBunForMe1989", "none pizza left beef", "Noob_Toobsteak", "noobmeat", "normalguy69", "NornWasp", "Not a bot", "Not CK", "not ddrandom", "not meatyrandom", "not not ddrandom", "not not meatyrandom", "not not not ddrandom", "not not not not ddrandom", "Not_A_Junkbot_Trust", "Not_The_IRS", "Notadog", "NotAWienerBot-X01", "NotCreativeBorshtch", "notfullycooked124", "NotHotJustDog", "notorious grill tipper", "NotoriousSchmeat42", "notoscarmeyer", "nougatzubbie", "Nourishment69", "Nov4cat", "NovaBeast", "NOWIHAVEASOUNDCHECKHOHOHO", "nrxoz", "null", "NumbaWonWiener1059", "number1oculushater", "Nut_Smakr", "oadomi", "OaxacaBinLiverwurst", "Obi-Wan-Sosogi", "Obscurely_Sausaging", "Oddsome sauce", "OhMeat56", "OktoberBrautwerst", "Old_A$$_Lady", "OmathiCatsup", "OMEATATRONIC", "OMEGATRONIC", "OMG_A_GRILL", "OMINOUS JINGLING COMES CHRISTMAS", "OneHOTDawg86", "One-Man Hotdog Apocalypse", "OneSlyDog", "OneVeryMeatyBoi", "OnlyCorndogsKillMe", "oog", "opengmi1991", "Opossum", "Opossum; Harbinger of Death", "OrdinaryFrank69", "OregonTrailMix", "OrganicOwl2002", "Original Sausage", "Oscar RR Meyer", "OscarForMayor", "OscarM", "OSple", "Outsteek", "Over 9000 Dogs Here™", "OwlCaBone", "P03L23", "P0rtl-Mstr-89", "p0tis_pencer_h3r3", "P3PP3R0NI S3CR3T", "P3RKED JORK", "Pablo Marinus III", "pablo.chorizo.2007", "Pablo.gonzales.2007", "pablo.gonzales.2026", "pablo.hernandez2009", "pablo.sausage.2007", "Padgriffin ", "Pakoopara", "Palms Sweaty", "PanchoWolf27", "Pandamanplayz", "PanFriedWeenie", "paperpunch", "parking meater ", "ParówaLover2000", "Patrick", "PeaSaucy", "PedroGonzales2007", "peer", "PemealBacon84", "PenguinMEATO", "Peppero-Mania", "PesPatronUa88", "Peter Griffin", "Peter Serafinowicz", "petermeater45", "Philosidog226", "PhoneyWeiner", "Picklas Cage", "Pickle Soup Rice", "Pickled_Hotdog", "PicklePickleson", "PickUpThatSarge333", "Plainclothes McDonalds Patty", "PlatinumWiedek", "PlumperHardlyNewer", "PMC.Tyto", "Pølse Jan", "Pooptown Jones", "Pootis", "PootiSpenser", "popidog", "Pork Missile", "Pork Roll", "pork.3", "Pork_Beanz", "Porker Polygon", "PorkinButter", "Porkrida!", "Porkvi", "PorkyCylinda'", "Poshdog Bunmuncher", "PositivityPossum27", "PostMaclone", "Potaters", "Potatoes", "PP Pete", "Pr0cess3dMeat", "President Joseph R Bacon Jr.", "President Pastrami", "PriapisticPacifist52", "Printed_Porker", "privateerfrank", "PrivateWiener", "Pro meat fortress gamer", "pro snoper main", "pro_pain92", "Procrastination_Sosig", "Prog4m3d3v37", "promeatbeater", "Promeater223", "ProppaGanda' Officer", "ProSausageHippie", "Proshooto", "prosig_2008", "ProSosig", "prrrki", "Prunsel ", "PSITRONIC", "PsychicWiener", "PsychoGriller", "Puddy", "Puetis", "Punished (venom) sosig", "PupIris", "Pure Collagen Casing", "PurePwnage", "Pvt. Parts", "pylsa_or_pulsa", "Qtaro kujo", "QuackLikeATurducken", "QuantumGLaDOS", "quantumgrillback", "QuasoDog", "Quiggles", "QuiteFranklyTheBest", "R L Soggy the Doggy", "R6viWas_Not_Here", "RadicalPro98", "Radwiener12233445", "Ragh-rity", "Ragu_The_Meatle", "Raiden Hog from Meatal Gear Solid 2", "ranch", "Rando3932", "RARE ENDANGERED CRAB MEAT", "ratheraforgetablesosig", "RatherLargeJohnson", "RaveEZ", "Raw pork", "RawDoGzz", "Real Meal Deal", "Real_Doe", "Real_Porkman", "RealAmeatican1993", "RealHuman", "RealSchnittyGaming", "ReCoVeRiNg VeGiTaRiAn", "RedDye40", "RedHotChiliMeats", "RedHotKledis", "RedHotMcCloud", "Redmeat676", "RedMeatSix", "RedMustard ", "relish.weiner.2007", "RelishLordJack", "RelishReaper", "RelishTheDay", "Remainer", "r\u0334\u0314\u0317e\u0334\u0341\u031cn\u0335\u0357\u0339d\u0337\u0315\u033be\u0334\u035d\u031dr\u0335\u0304\u033b \u0335\u035d\u0327e\u0334\u0304\u0317r\u0335\u035d\u033cr\u0338\u0358\u0325o\u0338\u0303\u0354r\u0336\u035b\u0326", "Reniew ", "ReptileQC1942", "RGBMeat", "rib newell, founder of smeme", "Rib-Tickle", "RichardTheCool", "Rickerino", "Ridwurst.", "Rightazs | MFCHEATS.COM", "Ringo_VR", "RoadRullepolse", "RoBobDurGurs", "Robososig", "robotic egg", "RocHotDog", "RocketSauce", "Rockman", "RodgersAndHamburgerstein", "Roishark_Test", "Roleplay Rick", "Ron Throngler", "ron", "RonaldRegen86", "Rongulator", "Roo Jerky", "RottenFate", "RotwienerRotweiler", "RoughTimeSosig", "RoxyTheSosig", "Rune Scimitar", "RusticBrat", "RustyBucket68", "s o u p", "S051GD3STR0Y3R_XX", "S777N", "SAC banned | freemywilly", "SadEdgyTeen", "salad dodger", "salamislopefalacy", "salamisVice", "Salisbury Sam", "Salm0n RushB", "salsichao_slayer", "SalsichaZueira_173", "saltbeefcitybro99", "Saltedpork", "SaltyM3at69", "Sandvich_da_best_class_07", "SandwichEater", "Sappin’ Your Sausage", "Sassy Gay Friend", "Sauce_Faller075", "SaucedOwO", "SauceMan ", "sauciestboss", "Saucisson_Slayer33127", "saucy_sausage123", "Sauerkraut_Enjoyer2", "SauerKritz", "SaulGoodmanΚΣ", "Saus Tzu", "Sausage Creole Jambalaya", "sausage dog", "sausage gaming", "Sausage Gaming", "Sausage hale", "Sausage Inspector", "sausage inversion", "Sausage Swindler", "Sausage_Samurai", "Sausage5Ever", "SausageAZ", "sausagefattener", "SausageHater123", "SausageInAKayak", "SausageLover", "sausagelover9000", "SausageRolla", "SausageRoller96", "SausageSavant | marketplace.mf", "sausagesmasher1986", "Sausagethatlikeskill", "SausageToast", "Sausagey", "Sausagiferous", "Sausigmetal", "Sausongi", "Sausquatch Hunter", "Sausuga2", "Saw sidge", "SawSage256", "Saxtong", "SaxtonHotdog", "SaxtonShmeat", "SchlawgWarrior_", "Schlummig", "SchmeatGuzzler83", "Schmeaton Hale", "Schmedic", "Schnitzel Von Weiner", "SchniztInMyPants", "Schnoodle", "Schrodingers_Wienerdog", "scout who laughs at 2fort grill", "ScoutingHamton_56", "ScoutPuncher331", "Scoutwurst", "SCRAMBLED_SPAM", "ScrappleFactory", "Scringoid", "Scrungo", "ScugsInABlanket", "SeaborneSun", "Seared&Feared88", "Secondhand Bun Salesman", "SeellyGleezy :)", "send_me_meatmails", "SenterySausage08", "Sentient Meat Hook", "sentrys4meets", "Sergeant Big Willy", "Sergeant_Schneiders", "SergeantSausage69", "SerialWinner2000", "SerraAngelicSosig", "Setient stomach", "SEVEN HUNDRED RATS", "Sgt Weiner II", "Sgt. Meatloaf", "Shadog", "Shadow Knight", "ShadoWeen", "ShadowSausage77", "shamelessPyrotech", "Shaquille Oatmeal", "SharkHotdog", "Shartner Beefsong", "shaushage shniper", "SheeprulerXO", "Shelf-Life_Enjoyer69420", "Shelflifefan98", "Shelling Salt", "Sheppydog", "ShermeatJumbodog", "Shigglegitter963", "Shmeatman", "ShmeatWolf_404", "Shmeterling248", "Sho7D0g", "shortenedandsweet", "ShoshBankler0800303", "SHOTDOGOFFICIAL_REAL", "shotgun heavy gaming", "Shrimp_Lover39", "Shrimple Company", "ShrimplySausage", "ShyMeatonyx", "Shy-Meaty-Chunk", "sigmaHOTDOG_69", "SigmaSaucer0", "SilentMeat70", "sillindah6", "SillySausageSarah", "SINISAUSAGE", "Sir Beefington", "Sir Brattus Vurst", "Sir Cumb3rland 69", "Sir Lactose the Intolerant", "Sir Quimbledon, Duke of Meat", "Sir Smoker Von Coal III", "Sir. Loin Beef", "Sir_Meaticus_Mustardbun", "Sir_Spork", "Sirloin_Dion", "SirMeatthewIII", "SirSizzleton", "SirVienna", "Sizzlin_Sosig", "skeleton #168", "SkibiddiSosig", "Skibidi_Rizzler", "skibidisosig", "SkibidiSosig_420", "SkinnyJames", "skk_bere", "Slamwich", "SlapSquatch", "SleepyMeatBoy2k12", "Slender ham", "Slicer", "slick_willy", "SlightlySlantedHotdog", "Slim Jimsuragi", "Slimeson tinkletur", "Slimesosig666", "Slimmed_Jim2", "Slippery_Meat", "SlipperyWieners32", "Slonky Fisch", "slopplemode", "SlowCookersMakeSlop13", "Sludge Dog Grillionare", "slumberdawg", "Slurp", "Smack", "smart_smella", "smeateater", "Smeatvin", "smeezleonthePAINT", "SmellsLikeDinner", "Smelly_Sausage", "Smeme User #35294", "Smeme user 2385993", "Smeme_Lover1", "Smemester", "Smemetastic", "Smitty", "Smoked Bologna", "smokedhombre96", "SmokedSausage420", "smokerdude2003", "SmokeyJonah", "Snackston Hale", "SnackstonHaleForPresident6969", "Snacky Silverbun", "snailfootedwiener", "Snapin Tuah sMeme", "snekwurst", "Sniffy Joe", "SniperSausage [Meatclan]", "SNIPEYWIPEY", "SnipingMeats", "SnoppDog", "Snordwiener", "sockim", "sodaguzzler", "SodiumSlayer65", "Soggybunboy0809", "SoggyMeatfortressNugget", "SoggyMicrowaveWiener", "soggyturd874", "SoisigTemp169", "sojitsu sigsen", "Solar9391", "SolarGrill", "Soldier Hog", "SolidSausage69", "SolidSosig", "SomebodyStoleMyBun", "Sonicnate", "sophie", "SosejiChanDaisuki", "sosgpwner9000", "Sosig 47", "sosig gaming", "Sosig Gaming", "Sosig Sauer, Sosig Mann", "SOSIG SHAKO FOR 2 REFINED", "Sosig that laughs at 2fort sink", "SOSIG WARRIOR", "sosig who only says meat", "sosig", "Sosig#98172", "sosig_cheats 1", "sosig_fingers", "Sosig_Stuffer69", "Sosig_underscore_underscore", "Sosig2ra", "SosigAgent05725", "Sosigandgravy", "SosigBodyPillow420", "Sosigchu_2421982", "SosigDoesSmeme", "SOSIGdOGRs", "Sosigg__", "Sosig-Inspector", "SosigKiller48", "sosigknight mf", "Sosiglutra", "SosigMicrowaveNugget", "Sosigneer", "Sosigner’s Cat", "Sosignow", "Sosigoon", "SosigParty98661", "SosigPounder69", "SosigRBL", "SosigRelisher_47", "SosigSam2011", "Sosigsauer", "sosigsix", "SosigskullsLover", "SosigTag", "SosigTea", "SOSIGTRONIC", "SosigTruck Time", "Sosiguler Jones!", "Sosigviking00", "SosigWizard42", "Sosonioni", "Soupcan24", "SouperSoaker", "sour egg (jeff)", "South_Pork_Fan_98", "sOwOsig", "Space", "SpaceCat", "SPAMala Isley", "Spamhamjam.stifftv", "SpamHammer", "Spaminator3000", "SparkyStabbington", "Spartan179029", "Spear_Sharko", "Specific Ocean", "Speechless_Beef", "spicy_weiner456", "spicyChorizo1049", "SpicySaiUa555", "Spiketenderloin", "SpoiledSausage", "Spoonyspoon", "Sport Pepper Sam", "SpreadsheetIHardlyKnowHer", "spyder335", "SPYRIC", "SQUIBZ", "Squirmin' Sherman", "Sr-Richard-Weiner", "srth_h", "SRYum795", "Ss_HawtestDawg_sS", "SS=SovietSausage", "St3althy Th3 L3m0n", "StadtRoboter", "Standard Reference Frank", "StanleyDaSosig", "StasukiDeezNuts", "StatisticallyCanadian", "Steak Eater", "steak.gonzalez2004", "Steaktorious", "SteamedHam", "SteamedHammy", "SteamyDog", "steven with a e", "StevenTheVegan", "StevetheWurst", "StickAdjacentMeatTube", "StickyMcWeiner", "StiffWiener442", "Stillchillyeas", "stillchillyeast", "Stillchillyeast", "stinkycrayon", "stomachissues21", "Stovey", "StrasbourgSaucisse", "Strelok", "Striped_Sausage", "SucculentChilidog935", "Sucky Flop", "Sue Sig", "sugoma dog", "SunningsBnags", "super_meatmann", "SuperGokuZ", "SuperMeatAlex", "SuperMeatFighterTurbo", "superweaner", "Susage-49", "Suspiciously Fishy", "Swatwurst", "Sweaty Stephany", "SweatyWeiner 96 De WateringDog", "swiss_indiana", "swisschicken", "T h e R a t", "t&hiscool5", "T0m_KhaK@i888", "t0pbeef", "T4ctiK00l-4id", "TacticalFox8389", "TacticalToast", "Take&hold_lordwiener", "Take&holewiener", "takenmold", "Talking Sosigs", "Tamago Nigirizushi", "tanaka wiener cart", "TankNut", "TastyColdCuts", "Tavish DeGroot", "TeaLeaf", "Teh_ePic_Weener", "Teidelmoo", "tekmyndaspy", "TeMeat", "Tentakkul", "terppa222", "Th3 pitat3", "Th4t_B1a5t3d_Bal0n3y", "ThaGr8Glizzy", "thatDogInMe", "ThatDogInMe69", "Thatstreamerwiener", "The Antagonist", "The Backyard Griller", "The Beef Chief", "The Beef", "THE BEEF", "The biggest Sausage", "The Biggest Wiener", "The Brautinator", "The Bun", "The Canadian C7 Rifle", "The Cartilage Connoisseur", "The Chiller Griller", "The Engineer from Meat Fortress 2", "The entire population of former canada", "The Flipper", "The Glizzinator", "The Gobbler", "The goobler", "The griller fra", "the grim hotdog", "the grungler", "The Grungler", "The Ham-mer", "The Hog Grabbler", "THE HOG", "the holy ham grenade", "The hoovy", "The Horseless Headless Hotdog", "The King Quirk", "The Lunch King", "The m3at manc3r", "The Mean Meaty", "The meat dog", "The meatinator ", "the MEATMANN", "The MeatMann", "The Meaty Curtains", "The Meaty-nator", "The Mister Jimmy Slims", "The myth", "the notorious ne'er do well", "The One Brie Man", "the phat dog", "The Porkinator", "The Real Anton Leg", "The Rizzler", "The Scary Sosig", "The Sizzler", "The Slipper", "The Sloppiest Joe", "The Sog of BBQ", "The Sossig from Vienna", "The Spatuala 4000", "The Superior Life Form", "The Tuxedo Turrrist", "The Wicked Witch of Bel Air", "The Wizard of Gauze", "The Wurstminator", "The", "the.Wurst.Brat", "The_BeefWellington", "The_Dog", "The_Getting_shot _Connoisseur", "The_Glizzler_2012", "The_Grizzler", "The_Kielbasinator", "The_King_of_North_Yorks", "The_Meat_Wrangler", "The_Only_Grill_youll_Talk_to", "The_Ranch", "The_Saamanen", "THE_tenderizer", "The_Wurst", "The_Wurst_Griller_99", "TheArbinator", "TheBaconCat", "THEBeefMeat (accept no substitutes)", "TheBIG_Sausage", "TheBigBeefyPapa", "TheBigDog", "TheBigLmaoski", "TheBoiledOne3477", "thecheesewithin", "TheCuredOne", "TheDeliMaster", "TheDogIsALie", "thee overdawg ", "TheEvilKielbasa", "TheFakeAntonHand", "TheFireWeiner", "TheFlopinator", "TheFraggingFrank. FrankyMcSpanky", "TheFreemeat84", "TheG00dSp0rt", "TheGentlemanDog93", "TheGoodIdeaFairy", "TheGriller", "TheGrungler104", "TheHawtestDawg", "TheHoldPointGuard", "TheHotDawg", "TheLunchKing", "Thembo", "TheMeatBeater", "TheMeatBunner69", "TheMeatFortressGoblin", "TheMeatIsALie", "The-Meat-Meister", "TheMeatRocket", "TheMeats27", "TheMeatSlapper570", "TheMissingLink420", "TheNamelessOne", "TheOhioGlizzler", "TheOneAndOnlyMeat", "TheOneTrueDog", "TheOneWhoDogs", "ThePickler3000", "ThePinkSunGlasseGuy", "TheR3alM3at_17", "TheRealAntonHand", "TheRealMustardMan", "TheReelGaybNuwell", "ThermallyEnergeticLabradorRetriever", "TheRoastalDude", "TheSausage27", "THESCHNiTZZ67", "TheTermiSchmeater", "theTopDog4570", "TheTopDogg", "TheUnholyKipper", "TheW31nerWack3r", "TheWarDog", "TheWeinerWackr", "TheWeinerWonder", "TheWiiner", "TheWurst", "TheWurstAtThis", "thewurstguy", "TheWurstMann", "TheWurstShot", "TheZoolMonster", "ThiccySmausage", "Thing1", "Thog Dog", "ThreeGherkinsInACoat", "ThreeSmokiesInABun", "Thronebutt", "Thunderbrat326", "ThuringerThor", "Time to meat my fate—just hope it doesn't end in a bun", "time_is_linear", "Timewuster504", "TinkeringHotdog", "Tiny Sosig Man", "TipTopFlop", "TMGUY", "TNH Weener 2024", "TNHMaster69", "TNTco0l", "ToastedBuns45", "ToastyPomeranian", "ToiletExplode1234", "TomatoBanger", "TomustoSucks", "Tony Bologna", "ToolipTheKitty", "top_frankfurter69", "TopDogWeenie", "Tophat Pork", "TopHog", "Topical Refrence", "Tosa", "TotallyNot_markus378", "TotallyNotAFurry", "TotallyNotAnAITrappedInAMeatBasedVirtualReailty", "Totallynotanaltweiner3", "TotallyNotJunkBot420", "TotallyRealCheeseburger420", "Totaly Not A Bot", "Toungeston Grill", "Toxicbratwurst", "ToxicHotdog12", "TRADEDOG-5302", "TraderDogs92", "tradietrader", "Train God", "Trans sausage <3", "Transauage72", "Trans-FatFrankie", "Triggered_Fingers", "Troll-key_sausage06", "troublemeater321", "TrudgeThroughTheSludge318", "TrueMeatDogg", "trustno1", "Tryhard Terry", "TTV_BeefJerky", "ttv_hot_dog", "TTV-John_Wurst ", "TubbleBubbleSillyString", "tube 0f me@t", "TubedHaggis", "Turgid Snek", "TurgidPorker", "Tycoon Florida Dog", "TyrantTyto", "Tyto.Not.Tumor.2002", "Tyto1Fox2", "TytoTheTumor", "ÜBERWURST", "ugly monstermoder", "UmamiBomber", "Uncle Dip", "uncle ham", "Uncle hotDog", "Uncle Shame", "uncommondonut", "Undercooked", "UnderCooked", "Underqualified_Gunmeat", "Undog", "unexpected item in baggage area", "Unoriginal_Sosig", "Unregistered smeme user", "UnusuallyMeatified", "usdaIsAScam24", "User 38256", "V1ennasB3st", "VagrantHotDoggie", "Val'Meatran", "VeenerDoog", "Vegan Chicken", "VeganSalami", "Vegetarian", "Vengeful_Vienna_Sausage7", "Verstbraut", "Vertigo", "VeryCoolSausage4523412365", "Victor Frankfurter", "Victorian Peasant", "Vienna_Viper", "viennaspeed15", "ViennaVivian", "ViennaWiener", "vinced beat", "Vinnie Venison", "VixThine", "VoraciousViener", "VR Player was taken", "VTecLover371", "vur5t", "W13N3R_K1773R", "Walter White", "Walter Wurst", "WarmSpaniel", "Webe Edingood", "WeenerMeemer", "Weenie Meanie BoBeanie", "WeenieHut_JR", "weeniemuncher", "WeenieWorm", "weewi", "weiner.gonzales.2009", "Weiner_gaming0451", "Weiner_GuyYT", "Weiner1337", "WeinerAndBunsAddict", "WeinerDawg", "WeinerDawg050299", "weinerface57", "WeinerGriller9001", "WeinerGuzzler46", "weinerkid26", "WeinerKiller69", "Weinerl0rd33", "WeinerSlapper9000", "WeinerStreamerSTV", "WeinertakEs@ll", "WeinerWeinerChickenDinner", "Weirdtwinkie", "WeisswurstGaming", "Well done weenie", "-Well Done-", "Well-Beefington ", "Were-Wiener awooooo", "wetnoodle", "Wh1sk3ySausage", "wheresthebeef250", "WhiningWeiner", "whiskey", "white pudding", "WhizzBangADinger102", "Wiener", "Wiener_melange", "Wiener_Will", "wienerdeskgrillera570", "wienerdiner97", "WienerJar", "Wienerpog", "WienersAreGerman777", "Wienerschnitzel_Warrior", "WienerTakesAll", "Wienerthatdoesnotcare", "Wienertog", "WienerWarrior69", "wienerwhacker6969696969", "WienerWienerSausageDinner", "WienerWienerWienerWienerHotdog", "wienerwisdom", "Wienerzilla", "Wienlion", "WienRAR", "wigglePhysics", "WiggleThatWeen", "Wild Weiner Wes", "Willy Wanker", "WillyTheGlizzyYT", "WillyTrombaloney", "WineyWeiner69", "winnerdog27", "WinnerWienerChickenDinner", "winnna29", "WithTheSauce", "wittyweiner3", "WM4thewin", "Wob Bob Jones", "WontonBeans1746", "Worstjes", "WorstWurst", "WraithOfTheWurst", "Wraptoon", "WrathoftheWurst", "WrongTF2", "Wurst player ever (1911 clan)", "Wurst_brat", "Wurst_Playeraround4", "Wurst4U", "WurstBestEngineer", "WurstBoy53", "WurstCaseScenario", "WurstEngineer299", "wurster.frankenfurt@smeme.web", "WurstInDaWurld", "Wurst-Mesa Scientist", "WurstNightmare", "WurstOfGrim", "Wurstoria_Grillo219", "Wurstpopper", "WurstVidya", "WurstWaterMain", "WurstWiener", "WWmeatveteran7766", "wyro", "X__H@t_D@Wg__X", "X_Space_Sosig_X", "XDDCA", "xdDogMan", "xot", "XotDog98", "X-Ray", "X-ShmeatBeater-X", "xThe_shriveled_sosig", "xWeinerWarriorx", "xX$tew_K1ngXx", "xX_ 6r1ll3r_Xx", "Xx_ fคr¢i๓iຖiŞ_xX", "xx_1337M3AT_xx", "Xx_69_HaggisMAXXER_69_xX", "Xx_BADPORK_xX", "Xx_BEEFEDFRANK_xX", "Xx_BloodSausage420_xX", "xX_Boneless_Glizzy_11_Xx", "xX_BornToGrill_Xx", "xX_BRATB3ST_Xx", "XX_BUNBURNS_XX", "xX_ch1li.d0g_Xx", "xX_DarkAngel_Xx", "Xx_EdgySosig_xX", "Xx_enokittymaster_xX", "xX_Frank_The_Furter_Xx", "xX_FrankDaWurst712_Xx", "Xx_FrankenFranksFrankster_xX", "xX_G4m3Fr34k_Xx", "xX_GabaGhoul69_Xx", "xX_GenericEdgyUsername_Xx", "Xx_GL1zzy_G0bbl3r_xX", "Xx_Glizzy_Gobbler_xX", "Xx_glizzygunner_xX", "xX_GoldLeader_Xx", "xX_Grill_Master_Xx", "xX_GrillnKill_Xx", "xX_H@m_pounder12_Xx", "xX_h34d5hots_Xx", "xx_hackmeat32_xx", "Xx_HottestWiener_Xx", "Xx_ImPastrami_xX", "Xx_Iration_xX", "Xx_JiggleBomb2013", "xX_kolbasz_Xx", "xX_kontract-griller_Xx", "Xx_Le-spy-main-69_xX", "Xx_M3AT_M4ST3R_xX", "xX_M3ATM4N_Xx", "xX_meat_automaton_Xx", "xX_MEATINATOR_Xx", "xX_MeatLord69_Xx", "xX_MeatMaster69_Xx", "xX_MeatPuppet_Xx", "Xx_MeatSlayer_xX", "xX_MeatWizard_Xx", "xX_mechanical_seperat0r_Xx", "Xx_MustardSnipes_xX", "Xx_sausage_slayer_xX", "Xx_ShadowTHEHotdog_xX", "Xx_sniperelite0X", "xX_SosigKilla_Xx", "Xx_SOSIGMAN_xX", "Xx_That_Particular_Fox_xX ", "Xx_the_meat_xX", "xX_THEMEATANDPOTATOES_Xx", "Xx_TheMeatMasher_xX", "xX_TheScaredGamer_Xx xX_TheScaryGamer_Xx", "Xx_TheSizzler_xX", "Xx_Toxicguy_xX", "xX_w31n0r_5n1p3r_Xx", "xX_weiner_X_hunter_Xx", "Xx_weinerslayerxX", "xX_Winning_Wiener_Xx", "Xx_WonderfulFrankfurter_xX", "Xx_WurstBr@t_EV4_xX", "Xx_WurstGriller_xX", "Xx_WurstStastical_xX", "xX|$au$age$wallower69|Xx", "xX0BigBunz0Xx", "xX5A1AM1-_-5AVA63Xx", "XxB0L0N13xX", "xXB1tterWurst21Xx ", "XxBaguette2000xX", "XxBoiledDawgxX", "xXBrisketKilla2007Xx", "xXBUN_BU5T3RXx", "XxBunsxX", "XxCaptainSausagexX", "xXCloutDogXx", "XxCurrywurstCarnagexX", "XxDarKnass_is_EternalxX", "xXDogSlayerXx", "Xxelite_gam3r0xX", "XXEpix_SosigDestr0yerXX", "XxfrankensquabxX", "xXGAMERGODXx", "xXGLIZZY_GLADIATORXx", "xXHot_DogxX", "XxHot_DogxX", "xXHotl33tDoggerXx", "xXKurt_smith1974Xx", "xXLil_Sm0kieXx", "xX-LooseBuns-XxTTV", "xXLopChongFanXx", "xXm3at.ur.mak0rXx", "xXMaster_GrillerXx", "xXMeat_lov3rXx", "XxMeat_PopsiclexX", "XxMeatBasherxX", "xXMeatBeaterXx", "XxMeatClapperxX", "xXMustard_HarvesterXx", "XxMustardMagexX", "xXPerrilous-PorkXx", "XxpigzinablanketxX", "XxSadDangrdogxX", "xXSasuageSLAYER64Xx", "xXSausage_Soldier243Xx", "XxSausageSlicer66xX", "xxSausageSpanker92", "xXSchm3atSl@yerXx", "xXShadowWeinerXx", "xXSHotDogSlayer98Xx", "xXsliceinweinerlandXx", "XxSLOPPERxX", "xXSMARTdogXx", "xXSN1P3R_D0GGXx", "xXSNAG_SNIPERXx", "Xxsome_sosig_guyxX", "xXSosigSnipaXx", "xXSp1ciestW31nerXx", "xX-TacticoolFool-Xx", "xxTheGnobblerxx", "xXTheWurstBratXx", "xXtomato-gamerXx", "xXWeAkest-L!NkXx", "XxWell_Done_Tommy_GunxX", "xXwienerpredatorXx", "xXwienerwarrior69Xx", "xXx__WellDoneBun__xXx", "xXx_7h3M347Hun732_xXx", "xXx_A11Beef_xXx", "xXx_Cur3dM33tS_xXx", "Xxx_D4m4g3dD0g_xxX", "xXx_DuMb_UsErNaMe_xXx", "XXX_femsausage_pro_XXX", "xXx_GRILLER MEAT_xXx", "xXx_H0tD0g_xXx", "xxX_H0T-DOG_Xxx", "xXx_HottesTDogG_xXx", "xXx_l337 D09_xXx", "xXx_meatsniffer_xXx", "XxX_MeatSpanker_XxX", "XxX_N00B_GR!ND3R_XxX", "xXx_Pr0_Ween_xXx", "xxX_ProHeadshotMeattubeGamer6969-2003_Xxx", "XxX_Sausage_Slayer_XxX", "Xxx_Schmeat010_xxX", "xxX_SHINIGAMI_Xxx", "XxX_Slicksausage_XxX", "xXx_Sniper_Weiner_xXx", "XxX_SniperGod_XxX", "xXx_SosigSmoker_xXx", "xXx_TheTenderizer_xXx", "xXx_VeganSlayer_xXx", "XXX_WeinerSlayer_XXX", "xxx_wienner_slayer_xxx", "xxX=69TehS1lentKill3r420=Xxx", "XxxArchangrillxxX", "xXxB0ngRippa420xXx", "XxXChubby_JoeXxX", "Xxxcondimentenjoyer73xxX", "--XxXHotDawgXxX--", "xXxiiiSosigSlingeriiixXx", "xxxl0r3m!psumxxx69", "XxXMaster_Meat_Beater69XxX", "XxxMeat_Mince_MasterxxX", "xxxMeatbeater420xxx", "XxXMeatManXxX", "XxXMeatMincerXxX", "xxXMeatPackerXxx", "xXxMu5tardWarri0rxXx", "xXxMUSTARD_GAMBLERxXx", "xXxProcessedPorkWadxXx", "xXxSausageSlayerxXx", "xxXSosigSlayerXxx", "XxxWeenieSlayerxxx", "xxXwienihilatorXxx", "xXxWURS1PL4Y3RxXx", "xxXX$osig_Hat_SellerXXxx", "XXxx____HawtDawgg_420___xxXX", "XxXxS0S1GxXxX", "Yaboihotdogger22", "yeetgodmcneckass", "yeetloaf", "Yeldog", "YeOlWigglyBones", "yesmar", "Yet Another MP5 Variant", "Yogurt", "You", "Your Local Dude", "your mom uses bullpup's lol", "Your mom", "yourthewurst1995", "YourWurst_Meatmare11", "YowieHands", "YoYoGoblinG", "yummm222", "Yung Blood Sausage", "yungporkz", "yuyers", "Z0_Noob", "ZA WURSTO", "zaBBQron", "Zanalog Horror", "Zane_The_Fluff", "ZeniFoox", "ZePuffyDog", "Zhelin", "ZiB #SaveMeatFortress", "ZipLocBaggedHotDog", "ZipperOpossum", "Zoinkinginator2009", "ZXC_ABSOLUTE_LEOPOLD_II", "zzZestyZingerZealouszz", "ZzzStalkerzzZ", "подкован", "腊肠", "臭い人生本質" }; public static string GetRandomName() { return database[Random.Range(0, database.Length)]; } } [Serializable] public class TGM_Player { [Header("Sosig")] public bool isSosig = false; public string playerName; public Sosig sosig; [Header("Human")] public int playerIndex = 0; public int classIndex = 0; public bool awaitingRespawn = false; [Header("Stats")] public int iff = 0; public int kills = 0; public int deaths = 0; public int score = 0; [Header("Data")] public List playersItems = new List(); public GameObject allyMarker; public void ResetPlayer() { kills = 0; deaths = 0; score = 0; awaitingRespawn = false; } public void DestroyPlayersItems() { for (int i = 0; i < playersItems.Count; i++) { if ((Object)(object)playersItems[i] != (Object)null) { Object.Destroy((Object)(object)((Component)playersItems[i]).gameObject); } } playersItems.Clear(); TGM_ClassMenu.ResetSpawnPoints(); } } [Serializable] public class TGM_PlayerClass { [Serializable] public class SubClass { public string name; public ItemSet[] items; } [Serializable] public class ItemSet { public string name; public int team = -1; [Header("Objects")] public bool requiredSecondaryPieces = true; public bool uniformObjects = false; public int objectCount = 1; public string[] objectID; [Header("-Ammo-")] public int ammoCount = 1; public string ammoContainerID = ""; public string cartridgeID = ""; } public string name; public Sprite thumbnail; public string spriteName = "Image.png"; public bool canSpawnLock = true; public int playerHealth = 5000; public int minKills = -1; public int maxKills = -1; public SubClass[] subClasses; } [Serializable] public class TGM_PlayerTeam { [Tooltip("Name of this team")] public string name; [Tooltip("Short explanation of the team")] [Multiline(6)] public string description; [Tooltip("Preview image of the team when selected")] public Sprite thumbnail; public TGM_PlayerClass[] playerClasses = new TGM_PlayerClass[1]; } public class TGM_Profile { [NonSerialized] public static TGM_Profile profile = new TGM_Profile(); public string name = "New Profile"; public string gamemode; public string[] playerTeams = new string[2]; public string[] sosigTeams = new string[2]; public int[] sosigLimit = new int[2]; public int[] scoreGoal = new int[2]; public List gameSettings; public List gamemodeSettings; } [Serializable] public class TGM_Settings { [Serializable] public class Setting { public enum SettingType { Strings, Int, FirstString } public string description; public string[] settings; [Tooltip("Does this use the settings string array as the output")] public SettingType type = SettingType.Strings; [Tooltip("Current value of this setting")] public int value = 0; [Tooltip("The Minimum possible value, Set to 0 with intMax for infinite")] public int intMin = 0; [Tooltip("The Maximum possible value, Set to 0 with intMin for infinite")] public int intMax = 64; [Tooltip("How much the value is incremented by")] public int intIncrement = 1; [Tooltip("If true, does not sync over H3MP")] public bool localOnly = false; [HideInInspector] public bool active = true; [HideInInspector] public TGM_Button button; } public static List gamemodeSettings = new List(); public static List gameSettings = new List { new Setting { description = "Spawn Lock:", settings = new string[3] { "Disabled (Global)", "Enabled (Global)", "Set Per Class" }, type = Setting.SettingType.Strings, value = 2, intMin = 0, intMax = 2, intIncrement = 1, localOnly = false }, new Setting { description = "Wave Spawn Time:", settings = new string[1] { "Map Default" }, type = Setting.SettingType.FirstString, value = 0, intMin = 0, intMax = 600, intIncrement = 5, localOnly = false }, new Setting { description = "Time Limit:", settings = new string[1] { "Infinite" }, type = Setting.SettingType.FirstString, value = 0, intMin = 0, intMax = 3600, intIncrement = 30, localOnly = false }, new Setting { description = "Show Friendlies:", settings = new string[2] { "Disabled", "Enabled" }, type = Setting.SettingType.Strings, value = 1, intMin = 0, intMax = 1, intIncrement = 1, localOnly = false }, new Setting { description = "Player Items Drop:", settings = new string[2] { "Disabled", "Enabled" }, type = Setting.SettingType.Strings, value = 0, intMin = 0, intMax = 1, intIncrement = 1, localOnly = false }, new Setting { description = "Sosig Weapons Drop:", settings = new string[2] { "Disabled", "Enabled" }, type = Setting.SettingType.Strings, value = 0, intMin = 0, intMax = 1, intIncrement = 1, localOnly = false }, new Setting { description = "Player Health:", settings = new string[1] { "Set Per Class" }, type = Setting.SettingType.FirstString, value = 0, intMin = 0, intMax = 100000, intIncrement = 250, localOnly = false }, new Setting { description = "Item Spawner:", settings = new string[2] { "Disabled", "Enabled" }, type = Setting.SettingType.Strings, value = 0, intMin = 0, intMax = 1, intIncrement = 1, localOnly = false }, new Setting { description = "Color Blind:", settings = new string[2] { "Disabled", "Enabled" }, type = Setting.SettingType.Strings, value = 0, intMin = 0, intMax = 1, intIncrement = 1, localOnly = true } }; public static int GetSetting(TGMSettingEnum setting) { return gameSettings[(int)setting].value; } public static void SetSetting(TGMSettingEnum setting, int value) { gameSettings[(int)setting].value = value; } public static int GetModeSetting(int setting) { return gamemodeSettings[setting].value; } public static void SetModeSetting(int setting, int value) { gamemodeSettings[setting].value = value; } } public enum TGMSettingEnum { SpawnLock, SpawnWaveTime, TimeLimit, ShowFriendlies, PlayerItemsOnDeath, SosigWeapons, PlayerHealth, ItemSpawner, ColorBlind } [Serializable] public class TGM_SosigTeam { [Serializable] public class SosigSet { public int minKills = -1; public int maxKills = -1; public bool useVehicleSpawn = false; [Tooltip("SosigEnemyID list for the RED Team, add duplicate IDs to weight them more likely to be picked")] public int[] sosigEnemyIDsRed; [Tooltip("SosigEnemyID list for the BLUE Team, add duplicate IDs to weight them more likely to be picked")] public int[] sosigEnemyIDsBlue; } [Tooltip("Name of this team of Sosigs")] public string name = ""; [Tooltip("Short explanation of the team of sosigs")] [Multiline(6)] public string description = "A short description of this sosig faction"; [Tooltip("Preview image of the team when selected")] public Sprite thumbnail; [Tooltip("Do Sosigs spawn in a linear order")] public bool spawnInOrder = false; public SosigSet[] sosigSet; } public class TGM_Team { public delegate void CreateSosigDelegate(Sosig s); public class SosigSetGroup { public int id; public bool useVehicle; } public string teamName; public int iff; public int playerTeam = 0; public int sosigTeam = 0; public int sosigLimit = 8; public int scoreGoal = -1; public List sosigs = new List(); public List sosigsData = new List(); public Color color; public int currentKills = 0; public int currentScore = 0; public TGM_Area currentSpawnArea; public float respawnTime = 0f; private int spawnIndex = 0; private int spawnOrderIndex = 0; public static event CreateSosigDelegate CreateSosigEvent; public TGM_PlayerTeam GetPlayerTeam() { return TGM_ModLoader.playerTeams[playerTeam]; } public TGM_SosigTeam GetSosigTeam() { return TGM_ModLoader.sosigTeams[sosigTeam]; } public void ResetTeamTracking() { currentKills = 0; currentScore = 0; } public void Respawn() { //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_00fd: Unknown result type (might be due to invalid IL or missing references) //IL_010c: Expected O, but got Unknown //IL_01ec: Unknown result type (might be due to invalid IL or missing references) //IL_01f1: Unknown result type (might be due to invalid IL or missing references) //IL_01f6: Unknown result type (might be due to invalid IL or missing references) //IL_01fa: Unknown result type (might be due to invalid IL or missing references) int playerIFF = GM.CurrentPlayerBody.GetPlayerIFF(); if (playerIFF == iff && TGM_Manager.instance.localPlayer.awaitingRespawn) { Vector3[] randomPlayerSpawnPoint = Global.GetRandomPlayerSpawnPoint(currentSpawnArea.spawnPoints[playerIFF].playerSpawnPoints); GM.CurrentMovementManager.TeleportToPoint(randomPlayerSpawnPoint[0], true, randomPlayerSpawnPoint[1]); TGM_Manager.instance.localPlayer.awaitingRespawn = false; TGM_ClassMenu.instance.spawnButtonText.text = "Spawn"; } if (Tools.ServerRunning()) { if (!Tools.IsHost()) { return; } TGM_Network.SpawnPlayers_ToClients(); } if (sosigs.Count >= sosigLimit) { return; } int num = sosigLimit - sosigs.Count; SpawnOptions spawnOptions = new SpawnOptions { SpawnState = (SosigOrder)7, SpawnActivated = true, EquipmentMode = (EquipmentSlots)7, SpawnWithFullAmmo = true, IFF = iff }; for (int i = 0; i < num; i++) { SosigSetGroup sosigID = GetSosigID(iff); Transform val = ((!sosigID.useVehicle || currentSpawnArea.spawnPoints[iff].sosigVehicleSpawnPoints == null || currentSpawnArea.spawnPoints[iff].sosigVehicleSpawnPoints.Length == 0) ? currentSpawnArea.spawnPoints[iff].sosigSpawnPoints[Random.Range(0, currentSpawnArea.spawnPoints[iff].sosigSpawnPoints.Length)] : currentSpawnArea.spawnPoints[iff].sosigVehicleSpawnPoints[Random.Range(0, currentSpawnArea.spawnPoints[iff].sosigVehicleSpawnPoints.Length)]); Vector3 gridXZPositionTransform = Global.GetGridXZPositionTransform(val, spawnIndex, 6); Sosig s = CreateTeamSosig(spawnOptions, gridXZPositionTransform, val.rotation, sosigID.id); TGM_Manager.instance.gamemode.OnSosigCreate(s); if (TGM_Team.CreateSosigEvent != null) { TGM_Team.CreateSosigEvent(s); } spawnIndex++; if (spawnIndex >= sosigLimit) { spawnIndex = 0; } } } public SosigSetGroup GetSosigID(int iff) { bool useVehicle = false; int num = -2; List list = new List(); TGM_SosigTeam tGM_SosigTeam = TGM_ModLoader.sosigTeams[sosigTeam]; if (tGM_SosigTeam == null) { TGMPlugin.Logger.LogError((object)"MISSING SOSIG TEAM"); return null; } if (tGM_SosigTeam.sosigSet == null) { TGMPlugin.Logger.LogError((object)"MISSING SOSIG SET"); return null; } for (int i = 0; i < tGM_SosigTeam.sosigSet.Length; i++) { bool flag = false; if (tGM_SosigTeam.sosigSet[i].maxKills == -1 || currentKills <= tGM_SosigTeam.sosigSet[i].maxKills) { flag = true; } bool flag2 = false; if (tGM_SosigTeam.sosigSet[i].minKills == -1 || currentKills >= tGM_SosigTeam.sosigSet[i].minKills) { flag2 = true; } if (flag2 && flag) { list.Add(tGM_SosigTeam.sosigSet[i]); } } if (list.Count <= 0) { TGMPlugin.Logger.LogWarning((object)"No Valid Sosig Sets found, defaulting to first Sosig Set"); list.Add(tGM_SosigTeam.sosigSet[0]); } if (tGM_SosigTeam.spawnInOrder) { List list2 = new List(); for (int j = 0; j < list.Count; j++) { int[] collection = ((iff == 0) ? list[j].sosigEnemyIDsRed : list[j].sosigEnemyIDsBlue); list2.AddRange(collection); if (list2.Count >= spawnOrderIndex) { useVehicle = list[j].useVehicleSpawn; } } spawnOrderIndex++; if (spawnOrderIndex >= list2.Count) { spawnOrderIndex = 0; useVehicle = list[0].useVehicleSpawn; } num = list2[spawnOrderIndex]; } else { int index = Random.Range(0, list.Count); TGM_SosigTeam.SosigSet sosigSet = list[index]; useVehicle = sosigSet.useVehicleSpawn; num = ((iff != 0) ? sosigSet.sosigEnemyIDsBlue[Random.Range(0, sosigSet.sosigEnemyIDsBlue.Length)] : sosigSet.sosigEnemyIDsRed[Random.Range(0, sosigSet.sosigEnemyIDsRed.Length)]); } return new SosigSetGroup { id = num, useVehicle = useVehicle }; } public Sosig CreateTeamSosig(SpawnOptions spawnOptions, Vector3 position, Quaternion rotation, int sosigID) { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_0119: Unknown result type (might be due to invalid IL or missing references) //IL_011e: Unknown result type (might be due to invalid IL or missing references) //IL_0128: Unknown result type (might be due to invalid IL or missing references) //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_0148: Unknown result type (might be due to invalid IL or missing references) //IL_0180: Unknown result type (might be due to invalid IL or missing references) Sosig val = SosigAPI.Spawn(ManagerSingleton.Instance.odicSosigObjsByID[(SosigEnemyID)sosigID], spawnOptions, position, rotation); val.SetAssaultSpeed((SosigMoveSpeed)4); val.FallbackOrder = (SosigOrder)7; val.CommandAssaultPoint(spawnOptions.SosigTargetPosition); val.MoveSpeed = (SosigMoveSpeed)4; val.DoesDropWeaponsOnBallistic = false; int index = 0; for (int i = 0; i < sosigsData.Count; i++) { if ((Object)(object)sosigsData[i].sosig == (Object)null) { index = i; break; } } sosigsData[index].sosig = val; DisableSosigWeaponPickup(val); NavMeshAgent component = ((Component)val).GetComponent(); component.obstacleAvoidanceType = TGM_Scene.instance.avoidanceQuailty; component.stoppingDistance = 1f; sosigs.Add(val); if (TGM_Settings.GetSetting(TGMSettingEnum.ShowFriendlies) == 1 && spawnOptions.IFF == GM.CurrentPlayerBody.GetPlayerIFF()) { GameObject val2 = Object.Instantiate(TGM_ModLoader.tgmAssets.iffPrefab, ((Component)val.Links[0].R).transform.position + Vector3.up * 0.75f, ((Component)val.Links[0].R).transform.rotation, ((Component)val.Links[0].R).transform); val2.transform.localRotation = Quaternion.Euler(0f, 0f, 180f); sosigsData[index].allyMarker = val2; } return val; } public void DisarmTeam() { //IL_0191: Unknown result type (might be due to invalid IL or missing references) if (GM.CurrentPlayerBody.GetPlayerIFF() == iff) { TGM_Manager.instance.localPlayer.DestroyPlayersItems(); } for (int i = 0; i < sosigs.Count; i++) { if ((Object)(object)sosigs[i] == (Object)null) { continue; } sosigs[i].DestroyAllHeldObjects(); for (int j = 0; j < sosigs[i].Hands.Count; j++) { if (sosigs[i].Hands[j] != null) { sosigs[i].Hands[j].DropHeldObject(); sosigs[i].Hands[j].HeldObject = null; } } int index = 0; for (; i < sosigs[i].Inventory.Slots.Count; i++) { if (sosigs[i].Inventory.Slots[index] != null) { sosigs[i].Inventory.Slots[index].DetachHeldObject(); sosigs[i].Inventory.Slots[index].IsHoldingObject = false; } } sosigs[i].CurrentOrder = (SosigOrder)8; } } public void AddAllyMarkers() { //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) if (TGM_Settings.GetSetting(TGMSettingEnum.ShowFriendlies) != 1) { return; } for (int i = 0; i < sosigsData.Count; i++) { if ((Object)(object)sosigsData[i].sosig != (Object)null) { GameObject val = Object.Instantiate(TGM_ModLoader.tgmAssets.iffPrefab, ((Component)sosigsData[i].sosig.Links[0].R).transform.position + Vector3.up * 0.75f, ((Component)sosigsData[i].sosig.Links[0].R).transform.rotation, ((Component)sosigsData[i].sosig.Links[0].R).transform); val.transform.localRotation = Quaternion.Euler(0f, 0f, 180f); sosigsData[i].allyMarker = val; } } } public void RemoveAllAllyMarkers() { for (int i = 0; i < sosigsData.Count; i++) { if ((Object)(object)sosigsData[i].allyMarker != (Object)null) { Object.Destroy((Object)(object)sosigsData[i].allyMarker); } } } public void ClearAllTeamSosigs() { for (int i = 0; i < sosigs.Count; i++) { if ((Object)(object)sosigs[i] != (Object)null) { sosigs[i].ClearSosig(); } } sosigs.Clear(); for (int j = 0; j < sosigsData.Count; j++) { if ((Object)(object)sosigsData[j].sosig != (Object)null) { sosigsData[j].sosig.ClearSosig(); } } sosigsData.Clear(); } public static void DisableSosigWeaponPickup(Sosig s) { if (TGM_Settings.GetSetting(TGMSettingEnum.SosigWeapons) == 1) { return; } foreach (Slot slot in s.Inventory.Slots) { if (!((Object)(object)slot.HeldObject == (Object)null)) { FVRPhysicalObject component = ((Component)slot.HeldObject).GetComponent(); if ((Object)(object)component != (Object)null) { component.IsPickUpLocked = true; } } } foreach (SosigHand hand in s.Hands) { if (!((Object)(object)hand.HeldObject == (Object)null)) { FVRPhysicalObject component2 = ((Component)hand.HeldObject).GetComponent(); if ((Object)(object)component2 != (Object)null) { component2.IsPickUpLocked = true; } } } } } public class Rush_CapturePoint : MonoBehaviour { public int detectIFF = 0; [HideInInspector] public bool canCapture = false; public float captureTotalTime = 5f; private float captureTime = 0f; public Image captureCircle; public GameObject capturedPrefab; [HideInInspector] public GameObject spawnedPrefab; private int handCount = 0; private List sosigCount = new List(); public AudioSource audioSource; public Vector2 audioPitchRange = new Vector2(0.75f, 1.25f); private void OnEnabled() { captureTime = 0f; ((Component)captureCircle).gameObject.SetActive(false); handCount = 0; sosigCount.Clear(); if ((Object)(object)spawnedPrefab != (Object)null) { Object.Destroy((Object)(object)spawnedPrefab); } audioSource.loop = true; audioSource.clip = (((Object)(object)TGM_Scene.instance.audioCapturing != (Object)null) ? TGM_Scene.instance.audioCapturing : TGM_Manager.instance.audioCapturing); audioSource.volume = 0f; audioSource.Stop(); } private void Update() { //IL_0099: Unknown result type (might be due to invalid IL or missing references) if (!canCapture) { if (((Component)captureCircle).gameObject.activeSelf) { ((Component)captureCircle).gameObject.SetActive(false); } if (audioSource.isPlaying) { audioSource.Stop(); } return; } if (captureTime != 0f) { ((Component)captureCircle).gameObject.SetActive(true); ((Component)captureCircle).transform.parent.LookAt(GM.CurrentPlayerBody.Head.position); captureCircle.fillAmount = Mathf.InverseLerp(0f, captureTotalTime, captureTime); if (!audioSource.isPlaying) { audioSource.Play(); } audioSource.volume = captureCircle.fillAmount; audioSource.pitch = Mathf.Lerp(audioPitchRange.x, audioPitchRange.y, audioSource.volume); } else { ((Component)captureCircle).gameObject.SetActive(false); if (audioSource.isPlaying) { audioSource.Stop(); } } if (!IsCapturing()) { if (captureTime != 0f) { captureTime = Mathf.Clamp(captureTime - Time.deltaTime * 2f, 0f, captureTotalTime); } return; } captureTime = Mathf.Clamp(captureTime + Time.deltaTime, 0f, captureTotalTime); if (captureTime >= captureTotalTime) { SendCapture(); CapturePoint(); } } public void CapturePoint() { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)spawnedPrefab != (Object)null)) { spawnedPrefab = Object.Instantiate(capturedPrefab, ((Component)this).transform.position, ((Component)this).transform.rotation); spawnedPrefab.SetActive(true); canCapture = false; ((Component)this).gameObject.SetActive(false); TGM_Manager.PlayAudio(TGM_Manager.PlayAudioEnum.Point); } } private void SendCapture() { TGM_Manager.instance.gamemode.AdjustTeamScore(detectIFF, 1); } private bool IsCapturing() { if (TGM_Manager.gameState != TGM_Manager.GameStateEnum.Gameplay) { return false; } for (int num = sosigCount.Count - 1; num >= 0; num--) { if ((Object)(object)sosigCount[num] != (Object)null) { return true; } sosigCount.RemoveAt(num); } if (GM.CurrentPlayerBody.Health <= 0f) { handCount = 0; } return handCount > 0 && GM.CurrentPlayerBody.Health > 0f; } private void OnTriggerEnter(Collider other) { if (GM.CurrentPlayerBody.GetPlayerIFF() == detectIFF && ((Object)other).name.Contains("Controller (")) { handCount++; return; } SosigLink component = ((Component)other).gameObject.GetComponent(); if ((Object)(object)component != (Object)null && component.S.GetIFF() == detectIFF) { sosigCount.Add(component.S); } } private void OnTriggerExit(Collider other) { if (GM.CurrentPlayerBody.GetPlayerIFF() == detectIFF && ((Object)other).name.Contains("Controller (")) { handCount--; return; } SosigLink component = ((Component)other).gameObject.GetComponent(); if ((Object)(object)component != (Object)null && component.S.GetIFF() == detectIFF) { sosigCount.Remove(component.S); } } private void OnValidate() { } } [Serializable] public class TGM_Gamemode { public const int redIFF = 0; public const int blueIFF = 1; public string name; public string description; public Sprite thumbnail; public const float gameStartDelay = 20f; public const float gameOverDelay = 15f; public int winIFF = -1; [HideInInspector] public int index = -1; public virtual void LoadDefaultProfile() { TGM_Settings.SetSetting(TGMSettingEnum.SpawnLock, 2); TGM_Settings.SetSetting(TGMSettingEnum.SpawnWaveTime, 0); TGM_Settings.SetSetting(TGMSettingEnum.TimeLimit, 0); TGM_Settings.SetSetting(TGMSettingEnum.ShowFriendlies, 1); TGM_Settings.SetSetting(TGMSettingEnum.PlayerItemsOnDeath, 0); TGM_Settings.SetSetting(TGMSettingEnum.SosigWeapons, 0); TGM_Settings.SetSetting(TGMSettingEnum.PlayerHealth, 0); TGM_Settings.SetSetting(TGMSettingEnum.ItemSpawner, 0); } public virtual void Setup() { TGMPlugin.Logger.LogDebug((object)"Gamemode: Setup"); } public virtual void Pregame() { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Expected O, but got Unknown //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Expected O, but got Unknown //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Expected O, but got Unknown //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Expected O, but got Unknown TGMPlugin.Logger.LogDebug((object)"Gamemode: Pregame"); GM.CurrentSceneSettings.SosigKillEvent += new SosigKill(TGM_Manager.instance.OnSosigKilled); FVRSceneSettings currentSceneSettings = GM.CurrentSceneSettings; TGM_Gamemode gamemode = TGM_Manager.instance.gamemode; currentSceneSettings.SosigKillEvent += new SosigKill(gamemode.OnSosigKilled); FVRSceneSettings currentSceneSettings2 = GM.CurrentSceneSettings; TGM_Gamemode gamemode2 = TGM_Manager.instance.gamemode; currentSceneSettings2.PlayerDeathFromIFFEvent += new PlayerDeathFromIFF(gamemode2.OnPlayerKilled); GM.CurrentSceneSettings.PlayerDeathFromIFFEvent += new PlayerDeathFromIFF(TGM_Manager.instance.PlayerDeathEvent); ((MonoBehaviour)TGM_Manager.instance).StartCoroutine(TGM_Manager.instance.SetGameStateDelayed(TGM_Manager.GameStateEnum.Gameplay, 20f)); if (TGM_Settings.GetSetting(TGMSettingEnum.SpawnWaveTime) >= 1) { for (int i = 0; i < TGM_Manager.instance.team.Length; i++) { TGM_Scene.instance.teams[i].teamSpawnTime = TGM_Settings.GetSetting(TGMSettingEnum.SpawnWaveTime); } } ((Component)TGM_Scene.instance.itemSpawner).gameObject.SetActive(TGM_Settings.GetSetting(TGMSettingEnum.ItemSpawner) == 1); } public virtual void GameplayStart() { TGMPlugin.Logger.LogDebug((object)"Gamemode: Gameplay Start"); } public virtual void Postgame() { TGMPlugin.Logger.LogDebug((object)"Gamemode: Post Game"); for (int i = 0; i < TGM_Manager.instance.team.Length; i++) { TGM_Manager.instance.team[i].Respawn(); } if (winIFF == -1) { for (int j = 0; j < TGM_Manager.instance.team.Length; j++) { TGM_Manager.instance.team[j].DisarmTeam(); } } else { int enemyIFF = Global.GetEnemyIFF(winIFF); TGM_Manager.instance.team[enemyIFF].DisarmTeam(); } for (int k = 0; k < TGM_Scene.instance.areas.Length; k++) { TGM_Scene.instance.areas[k].OpenArea(); } TGM_EndScreen.instance.SetEndScreen(state: true); ((MonoBehaviour)TGM_Manager.instance).StartCoroutine(TGM_Manager.instance.SetGameStateDelayed(TGM_Manager.GameStateEnum.Gameover, 15f)); } public virtual void GameOver() { //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Expected O, but got Unknown //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Expected O, but got Unknown //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Expected O, but got Unknown //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Expected O, but got Unknown TGMPlugin.Logger.LogDebug((object)("Gamemode: Game Over, Team Won: " + winIFF)); TGM_Manager.PlayAudio(TGM_Manager.PlayAudioEnum.Confirm); TGM_Manager.LeaveTeam(); for (int i = 0; i < TGM_Manager.instance.team.Length; i++) { TGM_Manager.instance.team[i].ClearAllTeamSosigs(); } if (TGM_Settings.GetSetting(TGMSettingEnum.ItemSpawner) == 0) { GM.CurrentPlayerBody.WipeQuickbeltContents(); } GM.CurrentSceneSettings.SosigKillEvent -= new SosigKill(TGM_Manager.instance.OnSosigKilled); FVRSceneSettings currentSceneSettings = GM.CurrentSceneSettings; TGM_Gamemode gamemode = TGM_Manager.instance.gamemode; currentSceneSettings.SosigKillEvent -= new SosigKill(gamemode.OnSosigKilled); FVRSceneSettings currentSceneSettings2 = GM.CurrentSceneSettings; TGM_Gamemode gamemode2 = TGM_Manager.instance.gamemode; currentSceneSettings2.PlayerDeathFromIFFEvent -= new PlayerDeathFromIFF(gamemode2.OnPlayerKilled); GM.CurrentSceneSettings.PlayerDeathFromIFFEvent -= new PlayerDeathFromIFF(TGM_Manager.instance.PlayerDeathEvent); TGM_MainMenu.instance.SelectGamemode(index); VaultSystem.ClearExistingSaveableObjects(true); AutoMeater[] array = Object.FindObjectsOfType(); for (int j = 0; j < array.Length; j++) { if ((Object)(object)array[j] != (Object)null) { array[j].KillMe(); } } MF2_Dispenser[] array2 = Object.FindObjectsOfType(); for (int k = 0; k < array2.Length; k++) { if ((Object)(object)array2[k] != (Object)null) { array2[k].DestroyMe(); } } } public virtual void Update() { if (TGM_Manager.gameState == TGM_Manager.GameStateEnum.Gameplay) { TimeSpan timeSpan; if (TGM_Settings.GetSetting(TGMSettingEnum.TimeLimit) > 0) { float num = TGM_Settings.GetSetting(TGMSettingEnum.TimeLimit); float num2 = Time.time - TGM_Manager.instance.startTime; float num3 = TGM_Manager.instance.startTime + num - num2; timeSpan = TimeSpan.FromSeconds(num3); } else { float num4 = Time.time - TGM_Manager.instance.startTime; timeSpan = TimeSpan.FromSeconds(num4); } TGM_Compass.instance.gameTimeText.text = timeSpan.Minutes + ":" + ((timeSpan.Seconds < 10) ? ("0" + timeSpan.Seconds) : ((object)timeSpan.Seconds)); } } public virtual bool IsGamemodeValid() { TGMPlugin.Logger.LogDebug((object)("Gamemode: IsGamemode " + name + " valid: " + false)); return false; } public virtual void OnJoinTeam(int iff) { } public virtual void AdjustTeamScore(int teamIFF, int amount, bool network = true) { TGMPlugin.Logger.LogDebug((object)("Gamemode: Adjust Team:" + teamIFF + " Score: " + amount)); if (TGM_Manager.gameState != TGM_Manager.GameStateEnum.Gameplay) { return; } TGM_Manager.instance.team[teamIFF].currentScore += amount; if (Tools.ServerRunning() && network) { if (Tools.IsHost()) { TGM_Network.AdjustScores_ToClients(teamIFF, amount); } else { TGM_Network.AdjustScores_ToServer(teamIFF, amount); } } } public virtual void OnSosigCreate(Sosig s) { TGMPlugin.Logger.LogDebug((object)"Gamemode: OnSosigCreate"); } public virtual void OnSosigKilled(Sosig s) { TGMPlugin.Logger.LogDebug((object)"Gamemode: OnSosigKilled"); if (TGM_Settings.GetSetting(TGMSettingEnum.SosigWeapons) == 0) { s.DestroyAllHeldObjects(); } s.ClearSosig(); if (TGM_Manager.gameState != TGM_Manager.GameStateEnum.Gameplay) { return; } int iFF = s.GetIFF(); if (s.GetDiedFromIFF() >= 0 && iFF != s.GetDiedFromIFF()) { if (s.GetDiedFromIFF() < TGM_Manager.instance.team.Length) { TGM_Manager.instance.team[s.GetDiedFromIFF()].currentKills++; } if (iFF != GM.CurrentPlayerBody.GetPlayerIFF()) { TGM_Manager.instance.localPlayer.kills++; } } } public virtual void OnPlayerKilled(bool killedSelf, int iff) { TGMPlugin.Logger.LogDebug((object)"Gamemode: OnPlayerKilled"); if (iff == 0 || iff == 1) { TGM_ClassMenu.instance.Setup(TGM_Manager.instance.team[GM.CurrentPlayerBody.GetPlayerIFF()].GetPlayerTeam().playerClasses); } } public virtual void RespawnTime() { for (int i = 0; i < TGM_Manager.instance.team.Length; i++) { if (Time.time >= TGM_Manager.instance.team[i].respawnTime) { TGMPlugin.Logger.LogDebug((object)("Gamemode: RespawnTime at: " + Time.time + " for team " + i)); TGM_Manager.instance.team[i].Respawn(); TGM_Manager.instance.team[i].respawnTime = Time.time + TGM_Scene.instance.teams[i].teamSpawnTime; } } } } [Serializable] public class TGM_Payload : TGM_Gamemode { public TGM_Payload(string modeName = "", string modeDescription = "", Sprite modeThumbnail = null) { name = modeName; description = modeDescription; thumbnail = modeThumbnail; } } [Serializable] public class TGM_Rush : TGM_Gamemode { private List capturePoints = new List(); private int captureRatio = 2; private int redSpawnRatio = 0; private bool isReversed = false; private bool IsSetup = false; public static CustomConnection connectionRush; public TGM_Rush(string modeName = "", string modeDescription = "", Sprite modeThumbnail = null) { name = modeName; description = modeDescription; thumbnail = modeThumbnail; } public override void LoadDefaultProfile() { base.LoadDefaultProfile(); TGM_Settings.SetSetting(TGMSettingEnum.TimeLimit, 720); } public override void Setup() { //IL_0170: Unknown result type (might be due to invalid IL or missing references) //IL_017a: Expected O, but got Unknown //IL_0187: Unknown result type (might be due to invalid IL or missing references) //IL_0191: Expected O, but got Unknown base.Setup(); for (int i = 0; i < TGM_Manager.instance.team.Length; i++) { if (TGM_Manager.instance.team[i].scoreGoal == -1) { TGM_Manager.instance.team[i].scoreGoal = TGM_Scene.instance.areas.Length - 1; } } TGM_MainMenu.instance.UpdateSettings(); if (!IsSetup) { IsSetup = true; List list = new List(); list.Add(new TGM_Settings.Setting { description = "Reverse Mode:", settings = new string[2] { "Disabled", "Enabled" }, type = TGM_Settings.Setting.SettingType.Strings, value = 0, intMin = 0, intMax = 1, intIncrement = 1, localOnly = false }); TGM_Settings.gamemodeSettings = list; TGM_MainMenu.instance.SetupGamemodeSettings(); } for (int j = 0; j < TGM_TeamSetup.instance.teamObjectiveAdjust.Length; j++) { TGM_TeamSetup.instance.teamObjectiveAdjust[j].SetActive(false); } if (Tools.ServerRunning() && connectionRush == null) { connectionRush = Tools.CreateCustomConnection("TGM_Rush"); connectionRush.ServerHandlerEvent += new UpdateHandlerDelegate(Rush_Receiver); connectionRush.ClientHandlerEvent += new UpdateHandlerDelegate(Rush_Receiver); } } public override void Pregame() { //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Unknown result type (might be due to invalid IL or missing references) base.Pregame(); TGM_Scene.instance.teams[1].teamSpawnTime = 1f; SetupAreas(); for (int i = 0; i < capturePoints.Count; i++) { if ((Object)(object)capturePoints[i] != (Object)null) { if ((Object)(object)capturePoints[i].spawnedPrefab != (Object)null) { Object.Destroy((Object)(object)capturePoints[i].spawnedPrefab); } Object.Destroy((Object)(object)((Component)capturePoints[i]).gameObject); } } capturePoints.Clear(); for (int j = 0; j < TGM_Scene.instance.areas.Length; j++) { if (TGM_Scene.instance.areas[j].iff == 1) { GameObject rushCapturePrefab = TGM_Scene.instance.rushCapturePrefab; Rush_CapturePoint component = Object.Instantiate(rushCapturePrefab, TGM_Scene.instance.areas[j].objective.position, TGM_Scene.instance.areas[j].objective.rotation).GetComponent(); capturePoints.Add(component); if ((Object)(object)TGM_Scene.instance.areas[j] == (Object)(object)TGM_Manager.instance.team[1].currentSpawnArea) { component.canCapture = true; } } } TGM_Scene.UpdateAllAreas(); } public override void GameplayStart() { TGM_Scene.instance.teams[1].teamSpawnTime = TGM_Scene.instance.teams[0].teamSpawnTime; } public override void Postgame() { base.Postgame(); int playerIFF = GM.CurrentPlayerBody.GetPlayerIFF(); if (winIFF == -1) { TGM_Manager.PlayAudio(TGM_Manager.PlayAudioEnum.TeamDraw); } else if (playerIFF == winIFF || playerIFF < 0) { TGM_Manager.PlayAudio(TGM_Manager.PlayAudioEnum.TeamWon); } else { TGM_Manager.PlayAudio(TGM_Manager.PlayAudioEnum.TeamLost); } } public override void GameOver() { base.GameOver(); } public override bool IsGamemodeValid() { TGMPlugin.Logger.LogMessage((object)("Teams Game ModeSet Gamemode " + name + " to " + true)); if ((Object)(object)TGM_Scene.instance.rushCapturePrefab == (Object)null) { return false; } for (int i = 0; i < TGM_Scene.instance.areas.Length; i++) { if ((Object)(object)TGM_Scene.instance.areas[i].objective == (Object)null) { return false; } } return true; } public override void Update() { base.Update(); float num = Time.time - TGM_Manager.instance.startTime; TimeSpan timeSpan = TimeSpan.FromSeconds(num); TGM_Compass.instance.gameTimeText.text = timeSpan.Minutes + ":" + ((timeSpan.Seconds < 10) ? ("0" + timeSpan.Seconds) : ((object)timeSpan.Seconds)); if (Tools.IsClient()) { return; } if (TGM_Manager.gameState == TGM_Manager.GameStateEnum.Pregame && Time.time >= TGM_Manager.instance.team[1].respawnTime) { TGMPlugin.Logger.LogDebug((object)("Gamemode: RespawnTime at: " + Time.time + " for team " + 1)); TGM_Manager.instance.team[1].Respawn(); TGM_Manager.instance.team[1].respawnTime = Time.time + TGM_Scene.instance.teams[1].teamSpawnTime; } if (TGM_Manager.gameState == TGM_Manager.GameStateEnum.Gameplay) { if (TGM_Settings.GetSetting(TGMSettingEnum.TimeLimit) > 0 && Time.time - TGM_Manager.instance.startTime >= (float)TGM_Settings.GetSetting(TGMSettingEnum.TimeLimit)) { AdjustTeamScore(0, -TGM_Manager.instance.team[0].currentScore); AdjustTeamScore(1, TGM_Manager.instance.team[1].scoreGoal); winIFF = 1; TGM_Manager.instance.SetGameState(TGM_Manager.GameStateEnum.Postgame); } RespawnTime(); } } public override void OnPlayerKilled(bool killedSelf, int iff) { if (iff == 0 || iff == 1) { base.OnPlayerKilled(killedSelf, iff); if (TGM_Manager.gameState == TGM_Manager.GameStateEnum.Gameplay) { TGM_Manager.instance.localPlayer.deaths++; TGM_Manager.instance.localPlayer.score += ((!killedSelf) ? 1 : (-1)); } } } public override void OnJoinTeam(int iff) { base.OnJoinTeam(iff); SetMarkers(); } private void SetMarkers() { //IL_0032: Unknown result type (might be due to invalid IL or missing references) TGM_Compass.ClearAllMarkers(); int playerIFF = GM.CurrentPlayerBody.GetPlayerIFF(); int enemyIFF = Global.GetEnemyIFF(playerIFF); int num = ((playerIFF != 0) ? 1 : 0); TGM_Compass.instance.CreateMarker(TGM_Compass.instance.markerSprites[num], Color.blue, TGM_Manager.instance.team[1].currentSpawnArea.objective); } public override void AdjustTeamScore(int teamIFF, int amount, bool network = true) { if (TGM_Manager.gameState != TGM_Manager.GameStateEnum.Gameplay || teamIFF == -1) { return; } if (teamIFF == GM.CurrentPlayerBody.GetPlayerIFF()) { TGM_Manager.instance.localPlayer.score += amount; } if (Tools.ServerRunning() && network) { if (Tools.IsHost()) { TGM_Network.AdjustScores_ToClients(teamIFF, amount); } else { TGM_Network.AdjustScores_ToServer(teamIFF, amount); } } TGM_Manager.instance.team[teamIFF].currentScore += amount; if (TGM_Manager.instance.team[teamIFF].currentScore >= TGM_Manager.instance.team[teamIFF].scoreGoal) { winIFF = teamIFF; TGM_Manager.instance.SetGameState(TGM_Manager.GameStateEnum.Postgame); } else { if (teamIFF != 0) { return; } int playerIFF = GM.CurrentPlayerBody.GetPlayerIFF(); if (amount > 0) { if (playerIFF <= 0) { TGM_Manager.PlayAudio(TGM_Manager.PlayAudioEnum.ObjectiveFriendlyCaptured); } else { TGM_Manager.PlayAudio(TGM_Manager.PlayAudioEnum.ObjectiveEnemyCaptured); } } int currentScore = TGM_Manager.instance.team[0].currentScore; int num = currentScore + 1; for (int i = 0; i < capturePoints.Count; i++) { capturePoints[i].canCapture = false; } if (num <= capturePoints.Count) { TGM_Manager.instance.team[0].currentSpawnArea = TGM_Scene.instance.areas[currentScore]; TGM_Manager.instance.team[0].currentSpawnArea.iff = 0; TGM_Manager.instance.team[1].currentSpawnArea = TGM_Scene.instance.areas[num]; TGM_Manager.instance.team[1].currentSpawnArea.iff = 1; capturePoints[currentScore].canCapture = true; TGM_Scene.UpdateAllAreas(); if (num < capturePoints.Count) { UpdateSosigOrders(); } } } } public override void OnSosigCreate(Sosig s) { base.OnSosigCreate(s); int iFF = s.GetIFF(); if (iFF == 1) { TGM_Sosigs.OrderSosigToLocations(s, TGM_Manager.instance.team[iFF].currentSpawnArea.GetRandomDefendArea(isReversed), (SosigMoveSpeed)4); return; } int enemyIFF = Global.GetEnemyIFF(s.GetIFF()); if (redSpawnRatio++ >= captureRatio) { TGM_Sosigs.OrderSosigToLocations(s, TGM_Manager.instance.team[enemyIFF].currentSpawnArea.GetRandomAttackArea(isReversed), (SosigMoveSpeed)4); redSpawnRatio = 0; } else { TGM_Sosigs.OrderSosigToLocations(s, TGM_Manager.instance.team[enemyIFF].currentSpawnArea.GetObjectiveArea(), (SosigMoveSpeed)4); } } public override void OnSosigKilled(Sosig s) { base.OnSosigKilled(s); for (int i = 0; i < TGM_Manager.instance.team.Length; i++) { if (TGM_Manager.instance.team[i].sosigs.Contains(s)) { TGM_Manager.instance.team[i].sosigs.Remove(s); } } } private void UpdateSosigOrders() { SetMarkers(); for (int i = 0; i < TGM_Manager.instance.team.Length; i++) { for (int j = 0; j < TGM_Manager.instance.team[i].sosigs.Count; j++) { if (TGM_Manager.instance.team[i].sosigs == null) { continue; } Sosig val = TGM_Manager.instance.team[i].sosigs[j]; if (i == 1) { TGM_Sosigs.OrderSosigToLocations(val, TGM_Manager.instance.team[i].currentSpawnArea.GetRandomDefendArea(isReversed), (SosigMoveSpeed)4); continue; } int enemyIFF = Global.GetEnemyIFF(val.GetIFF()); if (redSpawnRatio++ >= captureRatio) { TGM_Sosigs.OrderSosigToLocations(val, TGM_Manager.instance.team[enemyIFF].currentSpawnArea.GetRandomAttackArea(isReversed), (SosigMoveSpeed)4); redSpawnRatio = 0; } else { TGM_Sosigs.OrderSosigToLocations(val, TGM_Manager.instance.team[enemyIFF].currentSpawnArea.GetObjectiveArea(), (SosigMoveSpeed)4); } } } } private void SetupAreas() { if (!isReversed && TGM_Settings.GetModeSetting(0) == 1) { isReversed = true; ReverseAreas(); } else if (isReversed && TGM_Settings.GetModeSetting(0) == 0) { isReversed = false; ReverseAreas(); } for (int i = 0; i < TGM_Scene.instance.areas.Length; i++) { TGM_Scene.instance.areas[i].iff = 1; } TGM_Manager.instance.team[0].currentSpawnArea = TGM_Scene.instance.teams[0].startSpawnArea; TGM_Manager.instance.team[0].currentSpawnArea.iff = 0; if ((Object)(object)TGM_Scene.instance.areas[1] != (Object)(object)TGM_Manager.instance.team[0].currentSpawnArea) { TGM_Manager.instance.team[1].currentSpawnArea = TGM_Scene.instance.areas[1]; } TGM_Manager.instance.team[1].currentSpawnArea.iff = 1; } private void ReverseAreas() { TGM_Area[] array = new TGM_Area[TGM_Scene.instance.areas.Length]; int num = TGM_Scene.instance.areas.Length - 1; int num2 = 0; while (num >= 0) { array[num2] = TGM_Scene.instance.areas[num]; num--; num2++; } TGM_Scene.instance.areas = array; TGM_Scene.instance.teams[0].startSpawnArea = TGM_Scene.instance.areas[0]; TGM_Manager.instance.team[0].currentSpawnArea = TGM_Scene.instance.areas[0]; TGM_Scene.instance.areas[0].iff = 0; int num3 = TGM_Scene.instance.areas.Length - 1; TGM_Scene.instance.teams[1].startSpawnArea = TGM_Scene.instance.areas[1]; TGM_Manager.instance.team[1].currentSpawnArea = TGM_Scene.instance.areas[num3]; TGM_Scene.instance.areas[num3].iff = 1; } private void Rush_Receiver(int clientID, PacketData packet) { if (Tools.ServerRunning() && !Tools.IsHost()) { } } public void Rush_ToServer() { //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Expected O, but got Unknown if (Tools.ServerRunning()) { PacketData val = new PacketData(connectionRush.ToServerID); connectionRush.ClientToServer(val); } } public void Rush_ToClients() { //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Expected O, but got Unknown if (Tools.ServerRunning()) { PacketData val = new PacketData(connectionRush.ToServerID); connectionRush.ClientToServer(val); } } } [Serializable] public class TGM_TeamDeathmatch : TGM_Gamemode { public TGM_TeamDeathmatch(string modeName = "", string modeDescription = "", Sprite modeThumbnail = null) { name = modeName; description = modeDescription; thumbnail = modeThumbnail; } public override void LoadDefaultProfile() { base.LoadDefaultProfile(); } public override void Setup() { base.Setup(); for (int i = 0; i < TGM_Manager.instance.team.Length; i++) { if (TGM_Manager.instance.team[i].scoreGoal == -1) { TGM_Manager.instance.team[i].scoreGoal = 80; } } TGM_MainMenu.instance.UpdateSettings(); } public override void Pregame() { base.Pregame(); for (int i = 0; i < TGM_Manager.instance.team.Length; i++) { TGM_Manager.instance.team[i].currentSpawnArea.iff = i; } TGM_Scene.UpdateAllAreas(); } public override void Postgame() { base.Postgame(); int playerIFF = GM.CurrentPlayerBody.GetPlayerIFF(); if (winIFF == -1) { TGM_Manager.PlayAudio(TGM_Manager.PlayAudioEnum.TeamDraw); } else if (playerIFF == winIFF || playerIFF < 0) { TGM_Manager.PlayAudio(TGM_Manager.PlayAudioEnum.TeamWon); } else { TGM_Manager.PlayAudio(TGM_Manager.PlayAudioEnum.TeamLost); } } public override void GameOver() { base.GameOver(); } public override bool IsGamemodeValid() { TGMPlugin.Logger.LogMessage((object)("Teams Game ModeSet Gamemode " + name + " to " + true)); return true; } public override void Update() { base.Update(); if (Tools.IsClient() || TGM_Manager.gameState != TGM_Manager.GameStateEnum.Gameplay) { return; } RespawnTime(); for (int i = 0; i < TGM_Manager.instance.team.Length; i++) { TGM_Team tGM_Team = TGM_Manager.instance.team[i]; if (tGM_Team.currentScore >= tGM_Team.scoreGoal) { winIFF = tGM_Team.iff; TGM_Manager.instance.SetGameState(TGM_Manager.GameStateEnum.Postgame); return; } } if (TGM_Settings.GetSetting(TGMSettingEnum.TimeLimit) > 0) { winIFF = -1; float num = Time.time - TGM_Manager.instance.startTime; if (num >= (float)TGM_Settings.GetSetting(TGMSettingEnum.TimeLimit)) { TGM_Manager.instance.SetGameState(TGM_Manager.GameStateEnum.Postgame); } } } public override void OnPlayerKilled(bool killedSelf, int iff) { if (iff == 0 || iff == 1) { base.OnPlayerKilled(killedSelf, iff); if (TGM_Manager.gameState == TGM_Manager.GameStateEnum.Gameplay) { AdjustTeamScore(Global.GetEnemyIFF(GM.CurrentPlayerBody.GetPlayerIFF()), 1); TGM_Manager.instance.localPlayer.deaths++; TGM_Manager.instance.localPlayer.score += ((!killedSelf) ? 1 : (-1)); } } } public override void OnJoinTeam(int iff) { //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) base.OnJoinTeam(iff); int enemyIFF = Global.GetEnemyIFF(GM.CurrentPlayerBody.GetPlayerIFF()); Transform val = (((Object)(object)TGM_Manager.instance.team[enemyIFF].currentSpawnArea.capturePoint != (Object)null) ? TGM_Manager.instance.team[enemyIFF].currentSpawnArea.capturePoint : TGM_Manager.instance.team[enemyIFF].currentSpawnArea.objective); if ((Object)(object)val != (Object)null) { TGM_Compass.ClearAllMarkers(); TGM_Compass.instance.CreateMarker(TGM_Compass.instance.markerSprites[0], (iff == 0) ? Color.red : Color.blue, val); } } public override void AdjustTeamScore(int teamID, int amount, bool network = true) { if (TGM_Manager.gameState == TGM_Manager.GameStateEnum.Gameplay) { if (teamID == GM.CurrentPlayerBody.GetPlayerIFF()) { TGM_Manager.instance.localPlayer.score += amount; } base.AdjustTeamScore(teamID, amount, network); } } public override void OnSosigCreate(Sosig s) { base.OnSosigCreate(s); int enemyIFF = Global.GetEnemyIFF(s.GetIFF()); TGM_Sosigs.OrderSosigToLocations(s, TGM_Manager.instance.team[enemyIFF].currentSpawnArea.GetRandomAttackArea(), (SosigMoveSpeed)4); } public override void OnSosigKilled(Sosig s) { base.OnSosigKilled(s); AdjustTeamScore(Global.GetEnemyIFF(s.GetIFF()), 1); for (int i = 0; i < TGM_Manager.instance.team.Length; i++) { if (TGM_Manager.instance.team[i].sosigs.Contains(s)) { TGM_Manager.instance.team[i].sosigs.Remove(s); } } } } public class Global { public static FVRObject GetObjectID(string objectID) { if (!IM.OD.TryGetValue(objectID, out var value)) { TGMPlugin.Logger.LogMessage((object)("Cannot find object with id: " + objectID)); return null; } return value; } public static FVRPhysicalObject SpawnFVRObject(FVRObject fvrObject, Vector3 position, Vector3 rotation) { //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)fvrObject == (Object)null || (Object)(object)((AnvilAsset)fvrObject).GetGameObject() == (Object)null) { TGMPlugin.Logger.LogWarning((object)"Failed to spawn FVRObject"); return null; } return Object.Instantiate(((AnvilAsset)fvrObject).GetGameObject(), position, Quaternion.Euler(rotation)).GetComponent(); } public static void ReloadWithCartridge(FVRPhysicalObject container, FVRObject cartridge) { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)container == (Object)null) && !((Object)(object)cartridge == (Object)null)) { FireArmRoundClass firearmRoundClassFromFVRObject = GetFirearmRoundClassFromFVRObject(cartridge); FVRFireArmMagazine val = (FVRFireArmMagazine)(object)((container is FVRFireArmMagazine) ? container : null); if ((Object)(object)val != (Object)null) { val.ReloadMagWithType(firearmRoundClassFromFVRObject); } FVRFireArmClip val2 = (FVRFireArmClip)(object)((container is FVRFireArmClip) ? container : null); if ((Object)(object)val2 != (Object)null) { val2.ReloadClipWithType(firearmRoundClassFromFVRObject); } Speedloader val3 = (Speedloader)(object)((container is Speedloader) ? container : null); if ((Object)(object)val3 != (Object)null) { val3.ReloadClipWithType(firearmRoundClassFromFVRObject); } } } public static Vector3[] GetValidSpawnPoint(Transform transform) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) Vector3[] array = (Vector3[])(object)new Vector3[2]; Vector3 position = transform.position; Vector3 val = transform.localScale / 2f; Vector3 val2 = default(Vector3); ((Vector3)(ref val2))..ctor(Random.Range(0f - val.x, val.x), Random.Range(0f - val.y, val.y), Random.Range(0f - val.z, val.z)); NavMeshHit val3 = default(NavMeshHit); if (NavMesh.SamplePosition(position + val2, ref val3, transform.localScale.y, -1)) { position = ((NavMeshHit)(ref val3)).position; } array[0] = position; Quaternion rotation = transform.rotation; array[1] = ((Quaternion)(ref rotation)).eulerAngles; return array; } public static Vector3[] GetRandomPlayerSpawnPoint(Transform[] spawnPoints) { Transform transform = spawnPoints[Random.Range(0, spawnPoints.Length)]; return GetValidSpawnPoint(transform); } public static void TeleportToPoint(Vector3[] pointData) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) GM.CurrentMovementManager.TeleportToPoint(pointData[0], true, pointData[1]); } public static int GetEnemyIFF(int iff) { return (iff != 1) ? 1 : 0; } public static FireArmRoundClass GetFirearmRoundClassFromFVRObject(FVRObject round) { //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) for (int i = 0; i < AM.SRoundDisplayDataDic[round.RoundType].Classes.Length; i++) { if (AM.SRoundDisplayDataDic[round.RoundType].Classes[i].ObjectID.ItemID == round.ItemID) { return AM.SRoundDisplayDataDic[round.RoundType].Classes[i].Class; } } return AM.SRoundDisplayDataDic[round.RoundType].Classes[0].Class; } public static Vector3 GetGridXZPositionTransform(Transform t, int index, int squareCount) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) Vector3 lossyScale = t.lossyScale; float num = lossyScale.x / (float)squareCount; float num2 = lossyScale.z / (float)squareCount; float num3 = 0f - lossyScale.x / 2f + num / 2f; float num4 = 0f - lossyScale.z / 2f + num2 / 2f; int num5 = index / squareCount; int num6 = index % squareCount; Vector3 position = t.position; return position + t.rotation * new Vector3(num3 + (float)num5 * num, 0f, num4 + (float)num6 * num2); } } internal static class PluginInfo { internal const string NAME = "Teams Game Mode"; internal const string GUID = "Packer.Teams"; internal const string VERSION = "1.0.6"; } [BepInPlugin("Packer.Teams", "Teams Game Mode", "1.0.6")] [BepInProcess("h3vr.exe")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency("nrgill28.Atlas", "1.0.1")] public class TGMPlugin : BaseUnityPlugin { [CompilerGenerated] private sealed class d__3 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public Vector3 position; public Vector3 rotation; public bool hideTnH; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__3(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) switch (<>1__state) { default: return false; case 0: <>1__state = -1; <>2__current = ((MonoBehaviour)instance).StartCoroutine(TGM_ModLoader.LoadAssets()); <>1__state = 1; return true; case 1: <>1__state = -1; if ((Object)(object)TGM_ModLoader.tgmAssets == (Object)null || (Object)(object)TGM_ModLoader.tgmAssets.mapSelector == (Object)null) { return false; } mapSelector = Object.Instantiate(((Component)TGM_ModLoader.tgmAssets.mapSelector).gameObject, position, Quaternion.Euler(rotation)); mapSelector.GetComponent().tnhButton.SetActive(!hideTnH); return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } public static TGMPlugin instance; public static GameObject mapSelector; internal static ManualLogSource Logger { get; private set; } private void Awake() { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Expected O, but got Unknown instance = this; Logger = ((BaseUnityPlugin)this).Logger; AtlasPlugin.Loaders["teamsgamemode"] = (ISceneLoader)new SandboxLoader(); SceneManager.activeSceneChanged += ChangedActiveScene; } public static IEnumerator CreateMapMenu(Vector3 position, Vector3 rotation, bool hideTnH = false) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__3(0) { position = position, rotation = rotation, hideTnH = hideTnH }; } private void ChangedActiveScene(Scene current, Scene next) { //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) bool flag = false; if (((Scene)(ref next)).name.Contains("MainMenu3")) { ((MonoBehaviour)this).StartCoroutine(CreateMapMenu(new Vector3(1.3f, 1.5f, 0f), new Vector3(35f, 90f, 0f), hideTnH: true)); mapSelector = null; } } private void DebugSceneLoad() { string text = "TeamsGamemode_Example"; MonoBehaviour.print((object)("Attempting to load scene: " + text)); CustomSceneInfo customScene = AtlasPlugin.GetCustomScene(text); if (customScene != null) { AtlasPlugin.LoadCustomScene(text); } else { SteamVR_LoadLevel.Begin(text, false, 0.5f, 0f, 0f, 0f, 1f); } } } public class TGM_Area : MonoBehaviour { [Serializable] public class SpawnPoints { public string name; [Header("Player")] [Tooltip("Area where players can spawn, can be scaled")] public Transform[] playerSpawnPoints; [Header("Sosigs")] [Tooltip("Area where sosigs can spawn, can be scaled")] public Transform[] sosigSpawnPoints; [Tooltip("Area where vehicle or large sosigs can spawn, can be scaled")] public Transform[] sosigVehicleSpawnPoints; [Tooltip("Areas sosigs will navigate to when owned by enemies to find enemies")] public Transform[] sosigAttackAreas; [Tooltip("Defined areas sosigs will defend this Area")] public Transform[] sosigDefendAreas; } [HideInInspector] public int index = -1; [Header("Gameplay")] [HideInInspector] [Tooltip("Owner\nNeutral: -1\nRed: 0\nBlue: 1")] public int iff = -1; [Tooltip("The area which players can capture this point in if capturable")] public Transform capturePoint; [Tooltip("The location the objective will spawn, e.g. Flag for CTF")] public Transform objective; [Tooltip("The map defined objective time for this area, e.g. capture point time")] public float captureTime = 20f; public SpawnPoints[] spawnPoints = new SpawnPoints[2]; [Header("Game Objects")] [Tooltip("Friendly Objects that enable when owned by a friendly team")] public GameObject[] friendlyObjects; [Tooltip("Enemy Objects that are enabled when owned by an enemy team, e.g. Nav Blockers to stop enemies getting into spawn area")] public GameObject[] enemyObjects; [Tooltip("Neutral Objects that are enabled when owned by no team, e.g. Door on unused spawn room")] public GameObject[] neutralObjects; [Tooltip("Red Team Objects that are enabled when owned by the red team, e.g. Flags, banners")] public GameObject[] redObjects; [Tooltip("Blue Team Objects that are enabled when owned by the blue team, e.g. Flags, banners")] public GameObject[] blueObjects; public static Vector3[] attackIcon = (Vector3[])(object)new Vector3[3] { Vector3.up, Vector3.up * 0.5f + Vector3.left * 0.5f, Vector3.up * 0.5f + Vector3.right * 0.5f }; public void UpdateArea() { int playerIFF = GM.CurrentPlayerBody.GetPlayerIFF(); int enemyIFF = Global.GetEnemyIFF(playerIFF); for (int i = 0; i < friendlyObjects.Length; i++) { if ((Object)(object)friendlyObjects[i] != (Object)null) { friendlyObjects[i].SetActive(iff == playerIFF); } } for (int j = 0; j < enemyObjects.Length; j++) { if ((Object)(object)enemyObjects[j] != (Object)null) { enemyObjects[j].SetActive(iff == enemyIFF); } } for (int k = 0; k < neutralObjects.Length; k++) { if ((Object)(object)neutralObjects[k] != (Object)null) { neutralObjects[k].SetActive(iff < 0); } } for (int l = 0; l < redObjects.Length; l++) { if ((Object)(object)redObjects[l] != (Object)null) { redObjects[l].SetActive(iff == 0); } } for (int m = 0; m < blueObjects.Length; m++) { if ((Object)(object)blueObjects[m] != (Object)null) { blueObjects[m].SetActive(iff == 1); } } } public void OpenArea() { for (int i = 0; i < friendlyObjects.Length; i++) { friendlyObjects[i].SetActive(true); } for (int j = 0; j < enemyObjects.Length; j++) { enemyObjects[j].SetActive(false); } for (int k = 0; k < neutralObjects.Length; k++) { neutralObjects[k].SetActive(false); } } public List GetRandomAttackArea(bool inverse = false) { if (iff < 0) { TGMPlugin.Logger.LogWarning((object)"Wrong Attack IFF, defaulting to Objective"); return GetObjectiveArea(); } Transform area = ((!inverse) ? spawnPoints[iff].sosigAttackAreas[Random.Range(0, spawnPoints[iff].sosigAttackAreas.Length)] : spawnPoints[Global.GetEnemyIFF(iff)].sosigAttackAreas[Random.Range(0, spawnPoints[Global.GetEnemyIFF(iff)].sosigAttackAreas.Length)]); return GetRandomAreaPositions(area); } public List GetRandomDefendArea(bool inverse = false) { if (iff < 0) { TGMPlugin.Logger.LogWarning((object)"Wrong Defend IFF, defaulting to Objective"); return GetObjectiveArea(); } Transform area = ((!inverse) ? spawnPoints[iff].sosigDefendAreas[Random.Range(0, spawnPoints[iff].sosigDefendAreas.Length)] : spawnPoints[Global.GetEnemyIFF(iff)].sosigDefendAreas[Random.Range(0, spawnPoints[Global.GetEnemyIFF(iff)].sosigDefendAreas.Length)]); return GetRandomAreaPositions(area); } public List GetObjectiveArea() { Transform area = objective; return GetRandomAreaPositions(area); } private List GetRandomAreaPositions(Transform area) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) List list = new List(); Vector3 val = area.lossyScale / 2f; for (int i = 0; i < 2; i++) { Vector3 item = area.position + new Vector3(Random.Range(0f - val.x, val.x), Random.Range(0f - val.y, val.y), Random.Range(0f - val.z, val.z)); list.Add(item); } Quaternion rotation = area.rotation; list.Add(((Quaternion)(ref rotation)).eulerAngles); return list; } private void OnDrawGizmos() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_007e: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_00fd: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_028a: Unknown result type (might be due to invalid IL or missing references) //IL_07ba: Unknown result type (might be due to invalid IL or missing references) //IL_07c5: Unknown result type (might be due to invalid IL or missing references) //IL_07d0: Unknown result type (might be due to invalid IL or missing references) //IL_07d5: Unknown result type (might be due to invalid IL or missing references) //IL_07f4: Unknown result type (might be due to invalid IL or missing references) //IL_07ff: Unknown result type (might be due to invalid IL or missing references) //IL_0804: Unknown result type (might be due to invalid IL or missing references) //IL_080f: Unknown result type (might be due to invalid IL or missing references) //IL_0814: Unknown result type (might be due to invalid IL or missing references) //IL_0385: Unknown result type (might be due to invalid IL or missing references) //IL_037e: Unknown result type (might be due to invalid IL or missing references) //IL_038a: Unknown result type (might be due to invalid IL or missing references) //IL_0398: Unknown result type (might be due to invalid IL or missing references) //IL_014d: Unknown result type (might be due to invalid IL or missing references) //IL_0162: Unknown result type (might be due to invalid IL or missing references) //IL_017d: Unknown result type (might be due to invalid IL or missing references) //IL_0182: Unknown result type (might be due to invalid IL or missing references) //IL_01a0: Unknown result type (might be due to invalid IL or missing references) //IL_01a5: Unknown result type (might be due to invalid IL or missing references) //IL_01ba: Unknown result type (might be due to invalid IL or missing references) //IL_01ca: Unknown result type (might be due to invalid IL or missing references) //IL_01cf: Unknown result type (might be due to invalid IL or missing references) //IL_01d4: Unknown result type (might be due to invalid IL or missing references) //IL_01d6: Unknown result type (might be due to invalid IL or missing references) //IL_01d8: Unknown result type (might be due to invalid IL or missing references) //IL_01f0: Unknown result type (might be due to invalid IL or missing references) //IL_0205: Unknown result type (might be due to invalid IL or missing references) //IL_021a: Unknown result type (might be due to invalid IL or missing references) //IL_021f: Unknown result type (might be due to invalid IL or missing references) //IL_02cc: Unknown result type (might be due to invalid IL or missing references) //IL_02e1: Unknown result type (might be due to invalid IL or missing references) //IL_02f6: Unknown result type (might be due to invalid IL or missing references) //IL_02fb: Unknown result type (might be due to invalid IL or missing references) //IL_0866: Unknown result type (might be due to invalid IL or missing references) //IL_04e1: Unknown result type (might be due to invalid IL or missing references) //IL_04eb: Unknown result type (might be due to invalid IL or missing references) //IL_04f0: Unknown result type (might be due to invalid IL or missing references) //IL_04fa: Unknown result type (might be due to invalid IL or missing references) //IL_04ff: Unknown result type (might be due to invalid IL or missing references) //IL_0504: Unknown result type (might be due to invalid IL or missing references) //IL_0506: Unknown result type (might be due to invalid IL or missing references) //IL_0510: Unknown result type (might be due to invalid IL or missing references) //IL_0515: Unknown result type (might be due to invalid IL or missing references) //IL_051f: Unknown result type (might be due to invalid IL or missing references) //IL_0524: Unknown result type (might be due to invalid IL or missing references) //IL_0529: Unknown result type (might be due to invalid IL or missing references) //IL_0533: Unknown result type (might be due to invalid IL or missing references) //IL_0538: Unknown result type (might be due to invalid IL or missing references) //IL_053d: Unknown result type (might be due to invalid IL or missing references) //IL_053f: Unknown result type (might be due to invalid IL or missing references) //IL_0549: Unknown result type (might be due to invalid IL or missing references) //IL_054e: Unknown result type (might be due to invalid IL or missing references) //IL_0558: Unknown result type (might be due to invalid IL or missing references) //IL_055d: Unknown result type (might be due to invalid IL or missing references) //IL_0562: Unknown result type (might be due to invalid IL or missing references) //IL_0564: Unknown result type (might be due to invalid IL or missing references) //IL_056e: Unknown result type (might be due to invalid IL or missing references) //IL_0573: Unknown result type (might be due to invalid IL or missing references) //IL_057d: Unknown result type (might be due to invalid IL or missing references) //IL_0582: Unknown result type (might be due to invalid IL or missing references) //IL_0587: Unknown result type (might be due to invalid IL or missing references) //IL_0591: Unknown result type (might be due to invalid IL or missing references) //IL_0596: Unknown result type (might be due to invalid IL or missing references) //IL_059b: Unknown result type (might be due to invalid IL or missing references) //IL_0965: Unknown result type (might be due to invalid IL or missing references) //IL_031f: Unknown result type (might be due to invalid IL or missing references) //IL_0324: Unknown result type (might be due to invalid IL or missing references) //IL_0326: Unknown result type (might be due to invalid IL or missing references) //IL_0328: Unknown result type (might be due to invalid IL or missing references) //IL_032a: Unknown result type (might be due to invalid IL or missing references) //IL_0334: Unknown result type (might be due to invalid IL or missing references) //IL_0339: Unknown result type (might be due to invalid IL or missing references) //IL_03f4: Unknown result type (might be due to invalid IL or missing references) //IL_0409: Unknown result type (might be due to invalid IL or missing references) //IL_08a7: Unknown result type (might be due to invalid IL or missing references) //IL_08bd: Unknown result type (might be due to invalid IL or missing references) //IL_08d3: Unknown result type (might be due to invalid IL or missing references) //IL_08d8: Unknown result type (might be due to invalid IL or missing references) //IL_08e3: Unknown result type (might be due to invalid IL or missing references) //IL_08e8: Unknown result type (might be due to invalid IL or missing references) //IL_08f3: Unknown result type (might be due to invalid IL or missing references) //IL_08f8: Unknown result type (might be due to invalid IL or missing references) //IL_05d7: Unknown result type (might be due to invalid IL or missing references) //IL_05ec: Unknown result type (might be due to invalid IL or missing references) //IL_0607: Unknown result type (might be due to invalid IL or missing references) //IL_061c: Unknown result type (might be due to invalid IL or missing references) //IL_0637: Unknown result type (might be due to invalid IL or missing references) //IL_064c: Unknown result type (might be due to invalid IL or missing references) //IL_0651: Unknown result type (might be due to invalid IL or missing references) //IL_0653: Unknown result type (might be due to invalid IL or missing references) //IL_066e: Unknown result type (might be due to invalid IL or missing references) //IL_0683: Unknown result type (might be due to invalid IL or missing references) //IL_0688: Unknown result type (might be due to invalid IL or missing references) //IL_068a: Unknown result type (might be due to invalid IL or missing references) //IL_06a5: Unknown result type (might be due to invalid IL or missing references) //IL_06aa: Unknown result type (might be due to invalid IL or missing references) //IL_06ac: Unknown result type (might be due to invalid IL or missing references) //IL_06c1: Unknown result type (might be due to invalid IL or missing references) //IL_06c6: Unknown result type (might be due to invalid IL or missing references) //IL_06c8: Unknown result type (might be due to invalid IL or missing references) //IL_06e3: Unknown result type (might be due to invalid IL or missing references) //IL_06e8: Unknown result type (might be due to invalid IL or missing references) //IL_06ea: Unknown result type (might be due to invalid IL or missing references) //IL_06ff: Unknown result type (might be due to invalid IL or missing references) //IL_0704: Unknown result type (might be due to invalid IL or missing references) //IL_0706: Unknown result type (might be due to invalid IL or missing references) //IL_0721: Unknown result type (might be due to invalid IL or missing references) //IL_0726: Unknown result type (might be due to invalid IL or missing references) //IL_0728: Unknown result type (might be due to invalid IL or missing references) //IL_073d: Unknown result type (might be due to invalid IL or missing references) //IL_0742: Unknown result type (might be due to invalid IL or missing references) //IL_0744: Unknown result type (might be due to invalid IL or missing references) //IL_09a9: Unknown result type (might be due to invalid IL or missing references) //IL_09bf: Unknown result type (might be due to invalid IL or missing references) //IL_09d5: Unknown result type (might be due to invalid IL or missing references) //IL_09da: Unknown result type (might be due to invalid IL or missing references) //IL_09e5: Unknown result type (might be due to invalid IL or missing references) //IL_09ea: Unknown result type (might be due to invalid IL or missing references) //IL_09f5: Unknown result type (might be due to invalid IL or missing references) //IL_0a0b: Unknown result type (might be due to invalid IL or missing references) //IL_0a1b: Unknown result type (might be due to invalid IL or missing references) //IL_0a20: Unknown result type (might be due to invalid IL or missing references) //IL_0a22: Unknown result type (might be due to invalid IL or missing references) //IL_0a24: Unknown result type (might be due to invalid IL or missing references) //IL_042a: Unknown result type (might be due to invalid IL or missing references) //IL_043f: Unknown result type (might be due to invalid IL or missing references) //IL_044b: Unknown result type (might be due to invalid IL or missing references) //IL_0450: Unknown result type (might be due to invalid IL or missing references) //IL_0483: Unknown result type (might be due to invalid IL or missing references) //IL_0498: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)objective != (Object)null) { Gizmos.color = new Color(0.99f, 0.75f, 0f); Vector3 val = objective.position + Vector3.up * 2f; Vector3 val2 = val + Vector3.down * 0.25f + objective.forward / 2f; Gizmos.DrawLine(objective.position, val); Gizmos.DrawLine(val, val2); Gizmos.DrawLine(val2, objective.position + Vector3.up * 1.5f); } Color color = default(Color); for (int i = 0; i < spawnPoints.Length; i++) { if (spawnPoints[i] == null) { continue; } if (spawnPoints[i].playerSpawnPoints != null) { Color green = Color.green; green.a = 0.2f; Gizmos.color = green; for (int j = 0; j < spawnPoints[i].playerSpawnPoints.Length; j++) { if (!((Object)(object)spawnPoints[i].playerSpawnPoints[j] == (Object)null)) { Gizmos.DrawCube(spawnPoints[i].playerSpawnPoints[j].position, spawnPoints[i].playerSpawnPoints[j].lossyScale); Vector3 lossyScale = spawnPoints[i].playerSpawnPoints[j].lossyScale; lossyScale.y = 0.001f; Vector3 val3 = spawnPoints[i].playerSpawnPoints[j].position + Vector3.down * (spawnPoints[i].playerSpawnPoints[j].lossyScale.y * 0.25f); Gizmos.DrawWireCube(val3, lossyScale); Gizmos.DrawLine(spawnPoints[i].playerSpawnPoints[j].position, spawnPoints[i].playerSpawnPoints[j].position + spawnPoints[i].playerSpawnPoints[j].forward); } } } if (spawnPoints[i].sosigSpawnPoints != null) { ((Color)(ref color))..ctor(0.999f, 0.5f, 0f); color.a = 0.2f; Gizmos.color = color; for (int k = 0; k < spawnPoints[i].sosigSpawnPoints.Length; k++) { if (!((Object)(object)spawnPoints[i].sosigSpawnPoints[k] == (Object)null)) { Gizmos.DrawLine(spawnPoints[i].sosigSpawnPoints[k].position, spawnPoints[i].sosigSpawnPoints[k].position + spawnPoints[i].sosigSpawnPoints[k].forward); for (int l = 0; l < 36; l++) { Vector3 gridXZPositionTransform = Global.GetGridXZPositionTransform(spawnPoints[i].sosigSpawnPoints[k], l, 6); Gizmos.DrawLine(gridXZPositionTransform, gridXZPositionTransform + Vector3.up * 2f); } } } } Color color2 = ((i == 0) ? Color.red : Color.blue); color2.a = 0.25f; Gizmos.color = color2; if (spawnPoints[i].sosigAttackAreas != null) { for (int m = 0; m < spawnPoints[i].sosigAttackAreas.Length; m++) { if (!((Object)(object)spawnPoints[i].sosigAttackAreas[m] == (Object)null)) { Gizmos.DrawCube(spawnPoints[i].sosigAttackAreas[m].position, spawnPoints[i].sosigAttackAreas[m].lossyScale); for (int n = 0; n < attackIcon.Length; n++) { Gizmos.DrawLine(spawnPoints[i].sosigAttackAreas[m].position, spawnPoints[i].sosigAttackAreas[m].position + attackIcon[n]); } Gizmos.DrawWireCube(spawnPoints[i].sosigAttackAreas[m].position, spawnPoints[i].sosigAttackAreas[m].lossyScale); } } } if (spawnPoints[i].sosigDefendAreas == null) { continue; } Vector3 val4 = Vector3.up * 0.5f + Vector3.left * 0.5f; Vector3 val5 = Vector3.up * 0.5f + Vector3.left * 0.5f + Vector3.up * 0.5f; Vector3 val6 = Vector3.up * 0.5f + Vector3.right * 0.5f; Vector3 val7 = Vector3.up * 0.5f + Vector3.right * 0.5f + Vector3.up * 0.5f; for (int num = 0; num < spawnPoints[i].sosigDefendAreas.Length; num++) { if (!((Object)(object)spawnPoints[i].sosigDefendAreas[num] == (Object)null)) { Gizmos.DrawCube(spawnPoints[i].sosigDefendAreas[num].position, spawnPoints[i].sosigDefendAreas[num].lossyScale); Gizmos.DrawWireCube(spawnPoints[i].sosigDefendAreas[num].position, spawnPoints[i].sosigDefendAreas[num].lossyScale); Gizmos.DrawLine(spawnPoints[i].sosigDefendAreas[num].position, spawnPoints[i].sosigDefendAreas[num].position + val4); Gizmos.DrawLine(spawnPoints[i].sosigDefendAreas[num].position, spawnPoints[i].sosigDefendAreas[num].position + val6); Gizmos.DrawLine(spawnPoints[i].sosigDefendAreas[num].position + val4, spawnPoints[i].sosigDefendAreas[num].position + val5); Gizmos.DrawLine(spawnPoints[i].sosigDefendAreas[num].position + val6, spawnPoints[i].sosigDefendAreas[num].position + val7); Gizmos.DrawLine(spawnPoints[i].sosigDefendAreas[num].position + val5, spawnPoints[i].sosigDefendAreas[num].position + val7); } } } if ((Object)(object)capturePoint != (Object)null && ((Component)capturePoint).gameObject.activeSelf) { Gizmos.matrix = Matrix4x4.TRS(capturePoint.position, capturePoint.rotation, capturePoint.lossyScale); Gizmos.color = new Color(0.1f, 1f, 1f, 0.25f); Gizmos.DrawCube(Vector3.zero, Vector3.one); Gizmos.DrawWireCube(Vector3.zero, Vector3.one); } Color color3 = default(Color); Color color4 = default(Color); for (int num2 = 0; num2 < spawnPoints.Length; num2++) { if (spawnPoints[num2].sosigVehicleSpawnPoints != null) { ((Color)(ref color3))..ctor(1f, 0.75f, 0.25f); color3.a = 0.2f; Gizmos.color = color3; for (int num3 = 0; num3 < spawnPoints[num2].sosigVehicleSpawnPoints.Length; num3++) { if (!((Object)(object)spawnPoints[num2].sosigVehicleSpawnPoints[num3] == (Object)null)) { Gizmos.matrix = Matrix4x4.TRS(spawnPoints[num2].sosigVehicleSpawnPoints[num3].position, spawnPoints[num2].sosigVehicleSpawnPoints[num3].rotation, spawnPoints[num2].sosigVehicleSpawnPoints[num3].lossyScale); Gizmos.DrawCube(Vector3.zero, Vector3.one); Gizmos.DrawWireCube(Vector3.zero, Vector3.one); } } } if (spawnPoints[num2].sosigSpawnPoints == null) { continue; } ((Color)(ref color4))..ctor(0.999f, 0.5f, 0f); color4.a = 0.2f; Gizmos.color = color4; for (int num4 = 0; num4 < spawnPoints[num2].sosigSpawnPoints.Length; num4++) { if (!((Object)(object)spawnPoints[num2].sosigSpawnPoints[num4] == (Object)null)) { Gizmos.matrix = Matrix4x4.TRS(spawnPoints[num2].sosigSpawnPoints[num4].position, spawnPoints[num2].sosigSpawnPoints[num4].rotation, spawnPoints[num2].sosigSpawnPoints[num4].lossyScale); Gizmos.DrawCube(Vector3.zero, Vector3.one); Vector3 val8 = Vector3.down * (spawnPoints[num2].sosigSpawnPoints[num4].lossyScale.y * 0.25f); Gizmos.DrawWireCube(val8, Vector3.one); } } } } private void OnValidate() { if (spawnPoints != null && spawnPoints.Length >= 2) { spawnPoints[0].name = "Red"; spawnPoints[1].name = "Blue"; } } } [CreateAssetMenu(fileName = "TGM Assets", menuName = "Teams Game Mode/TGM Assets", order = 1)] public class TGM_Assets : ScriptableObject { public TGM_Manager manager; public TGM_MainMenu mainMenu; public TGM_TeamSetup teamSetup; public TGM_ProfileMenu profileMenu; public TGM_ClassMenu classMenu; public TGM_Spectator spectator; public TGM_Compass compass; public TGM_EndScreen endScreen; public GameObject iffPrefab; public TGM_MapSelector mapSelector; } public class TGM_Manager : MonoBehaviour { public delegate void GameStateDelegate(); public delegate void StandardDelegate(); public enum PlayAudioEnum { Confirm, Press, Fail, Rearm, Point, Elimination, TeamWon, TeamLost, ObjectiveFriendlyCaptured, ObjectiveEnemyCaptured, TeamDraw } public enum GameStateEnum { GamemodeSelect, Setup, Pregame, Gameplay, Postgame, Gameover } [CompilerGenerated] private sealed class d__39 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public GameStateEnum state; public float delay; public TGM_Manager <>4__this; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__39(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Expected O, but got Unknown switch (<>1__state) { default: return false; case 0: <>1__state = -1; <>2__current = (object)new WaitForSeconds(delay); <>1__state = 1; return true; case 1: <>1__state = -1; instance.SetGameState(state); return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } public static TGM_Manager instance; public static GameStateEnum gameState; public List gamemodes = new List(); public Sprite[] gamemodeThumbnails; public int teamCount = 2; public TGM_Team[] team = new TGM_Team[2]; [HideInInspector] public TGM_Gamemode gamemode; [Header("DATA")] public TGM_Player localPlayer = new TGM_Player(); public float startTime = 0f; [Header("Audio")] public AudioSource globalAudio; public AudioSource backgroundAudio; [Tooltip("Start Game, or spawn items etc")] public AudioClip audioConfirm; [Tooltip("Regular Button Press")] public AudioClip audioPress; [Tooltip("Something broke or didn't accept input")] public AudioClip audioFail; [Tooltip("Rearm Player")] public AudioClip audioRearm; [Tooltip("Player's Team Objective point change")] public AudioClip audioPoint; [Tooltip("Get Kill")] public AudioClip audioElimination; [Tooltip("Player's Team Won")] public AudioClip audioTeamWon; [Tooltip("Player's Team Lost")] public AudioClip audioTeamLost; [Tooltip("Both Teams Draw")] public AudioClip audioTeamDraw; [Tooltip("An objective has been captured")] public AudioClip audioObjectiveEnemyCaptured; [Tooltip("An objective has been captured")] public AudioClip audioObjectiveFriendlyCaptured; [Tooltip("A capture point or objective is being captured")] public AudioClip audioCapturing; private float safteyCheck = 0f; public static event GameStateDelegate GameStateEvent; public static event StandardDelegate GamemodesLoadedEvent; public void Setup() { //IL_0147: Unknown result type (might be due to invalid IL or missing references) //IL_014c: Unknown result type (might be due to invalid IL or missing references) //IL_017a: Unknown result type (might be due to invalid IL or missing references) //IL_017f: Unknown result type (might be due to invalid IL or missing references) TGM_ModLoader.LoadPlayerTeams(); TGM_ModLoader.LoadSosigTeams(); team = new TGM_Team[teamCount]; for (int i = 0; i < team.Length; i++) { team[i] = new TGM_Team(); team[i].playerTeam = 0; team[i].iff = i; for (int j = 0; j < TGM_ModLoader.sosigTeams.Count; j++) { if (TGM_ModLoader.sosigTeams[j].name.Contains(TGM_Scene.instance.teams[i].defaultSosigTeam)) { team[i].sosigTeam = j; break; } } for (int k = 0; k < TGM_ModLoader.playerTeams.Count; k++) { if (TGM_ModLoader.playerTeams[k].name.Contains(TGM_Scene.instance.teams[i].defaultPlayerTeam)) { team[i].playerTeam = k; break; } } } team[0].teamName = "Red"; team[0].color = new Color(1f, 0.3764f, 0.3764f); team[1].teamName = "Blue"; team[1].color = new Color(0.3764f, 0.3764f, 1f); for (int l = 0; l < TGM_Scene.instance.areas.Length; l++) { if ((Object)(object)TGM_Scene.instance.areas[l] != (Object)null) { TGM_Scene.instance.areas[l].index = l; } } TGM_TeamSetup.instance.Setup(); TGM_MainMenu.instance.Setup(); TGM_ProfileMenu.instance.Setup(); if (Tools.ServerRunning()) { TGM_Network.Setup(); } SetGameState(GameStateEnum.GamemodeSelect); TGMPlugin.Logger.LogMessage((object)"TGM Setup Complete"); } private void OnDestroy() { if (Tools.H3MPEnabled) { TGM_Network.OnDestroyed(); } gamemode = null; TGM_Settings.gamemodeSettings.Clear(); } private void Awake() { instance = this; } private void Start() { if (gamemodes == null) { gamemodes = new List(); } TGM_TeamDeathmatch tGM_TeamDeathmatch = new TGM_TeamDeathmatch("Team Deathmatch", "2 Teams fight to the death", gamemodeThumbnails[0]); AddGamemode(tGM_TeamDeathmatch); TGM_Rush tGM_Rush = new TGM_Rush("Rush", "Attack and Defend", gamemodeThumbnails[1]); AddGamemode(tGM_Rush); TGM_Manager.GamemodesLoadedEvent?.Invoke(); } private void Update() { //IL_00a3: Unknown result type (might be due to invalid IL or missing references) if (gamemode != null) { gamemode.Update(); } if (gameState != GameStateEnum.Gameplay || !(Time.time >= safteyCheck)) { return; } safteyCheck = Time.time + 10.1f; for (int i = 0; i < team.Length; i++) { for (int j = 0; j < team[i].sosigsData.Count; j++) { if ((Object)(object)team[i].sosigsData[j].sosig != (Object)null && ((Component)team[i].sosigsData[j].sosig).transform.position.y < GM.CurrentSceneSettings.CatchHeight) { team[i].sosigsData[j].sosig.ClearSosig(); } } } } public void AddGamemode(TGM_Gamemode gamemode) { for (int i = 0; i < gamemodes.Count; i++) { if (gamemodes[i].name == gamemode.name) { return; } } TGMPlugin.Logger.LogMessage((object)("Adding Gamemode: " + gamemode.name)); gamemodes.Add(gamemode); gamemode.index = gamemodes.Count - 1; } public void SetGameState(GameStateEnum state) { gameState = state; TGMPlugin.Logger.LogMessage((object)("Set Game State: " + state)); if (TGM_Manager.GameStateEvent != null) { TGM_Manager.GameStateEvent(); } ((Component)TGM_TeamSetup.instance).gameObject.SetActive(false); TGM_ProfileMenu.instance.loadProfileButton.SetActive(false); switch (state) { case GameStateEnum.GamemodeSelect: TGM_MainMenu.instance.OpenPage(TGM_MainMenu.Page.Gamemode); break; case GameStateEnum.Setup: TGM_MainMenu.instance.OpenPage(TGM_MainMenu.Page.GameSettings); gamemode.Setup(); startTime = 0f; ((Component)TGM_TeamSetup.instance).gameObject.SetActive(true); TGM_ProfileMenu.instance.loadProfileButton.SetActive(true); TGM_MainMenu.instance.UpdateSettings(); SetColorBlind(); break; case GameStateEnum.Pregame: TGM_MainMenu.instance.OpenPage(TGM_MainMenu.Page.JoinTeam); startTime = Time.time + 20f; gamemode.Pregame(); break; case GameStateEnum.Gameplay: TGM_MainMenu.instance.OpenPage(TGM_MainMenu.Page.JoinTeam); gamemode.GameplayStart(); break; case GameStateEnum.Postgame: TGM_MainMenu.instance.OpenPage(TGM_MainMenu.Page.JoinTeam); gamemode.Postgame(); break; case GameStateEnum.Gameover: TGM_MainMenu.instance.OpenPage(TGM_MainMenu.Page.JoinTeam); gamemode.GameOver(); break; } if (Tools.ServerRunning() && Tools.IsHost()) { TGM_Network.GameSettings_ToClients(); } } public IEnumerator SetGameStateDelayed(GameStateEnum state, float delay) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__39(0) { <>4__this = this, state = state, delay = delay }; } public void OnSosigKilled(Sosig s) { TGM_Team tGM_Team = team[s.GetIFF()]; } public void SetColorBlind() { //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00da: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_00f4: Unknown result type (might be due to invalid IL or missing references) //IL_0113: Unknown result type (might be due to invalid IL or missing references) //IL_0151: Unknown result type (might be due to invalid IL or missing references) //IL_0170: Unknown result type (might be due to invalid IL or missing references) if (TGM_Settings.GetSetting(TGMSettingEnum.ColorBlind) == 1) { team[0].teamName = "YELLOW"; team[0].color = new Color(1f, 1f, 0.3764f); team[1].teamName = "PURPLE"; team[1].color = new Color(0.5f, 0.3764f, 1f); } else { team[0].teamName = "RED"; team[0].color = new Color(1f, 0.3764f, 0.3764f); team[1].teamName = "BLUE"; team[1].color = new Color(0.3764f, 0.3764f, 1f); } ((Graphic)TGM_Compass.instance.cornerBackgrounds[0]).color = team[0].color; ((Graphic)TGM_MainMenu.instance.teamButtons[0]).color = team[0].color; TGM_MainMenu.instance.teamButtonText[0].text = team[0].teamName; ((Graphic)TGM_Compass.instance.cornerBackgrounds[1]).color = team[1].color; ((Graphic)TGM_MainMenu.instance.teamButtons[1]).color = team[1].color; TGM_MainMenu.instance.teamButtonText[1].text = team[1].teamName; } public static void LeaveTeam() { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) instance.localPlayer.awaitingRespawn = false; TGM_Scene.instance.playerResetPoint.SetPositionAndRotation(TGM_Scene.instance.defaultResetPosition, TGM_Scene.instance.defaultResetRotation); GM.CurrentPlayerBody.SetPlayerIFF(-3); Global.TeleportToPoint(Global.GetValidSpawnPoint(TGM_Scene.instance.playerResetPoint)); if ((Object)(object)TGM_ClassMenu.instance != (Object)null) { Object.Destroy((Object)(object)((Component)TGM_ClassMenu.instance).gameObject); } TGM_Scene.UpdateAllAreas(); } public void PlayerDeathEvent(bool killedSelf, int iff) { if (TGM_Settings.GetSetting(TGMSettingEnum.PlayerItemsOnDeath) <= 0) { return; } FVRPhysicalObject[] componentsInChildren = ((Component)((Component)GM.CurrentPlayerBody).transform).GetComponentsInChildren(); if (componentsInChildren != null) { for (int i = 0; i < componentsInChildren.Length; i++) { if ((Object)(object)componentsInChildren[i] != (Object)null && !Object.op_Implicit((Object)(object)componentsInChildren[i].ObjectWrapper)) { ((FVRInteractiveObject)componentsInChildren[i]).ForceBreakInteraction(); componentsInChildren[i].ClearQuickbeltState(); } } } if (!((Object)(object)GM.CurrentPlayerBody != (Object)null) || GM.CurrentPlayerBody.QBSlots_Internal == null) { return; } for (int j = 0; j < GM.CurrentPlayerBody.QBSlots_Internal.Count; j++) { if ((Object)(object)GM.CurrentPlayerBody.QBSlots_Internal[j] == (Object)null) { continue; } FVRPhysicalObject curObject = GM.CurrentPlayerBody.QBSlots_Internal[j].CurObject; if ((Object)(object)curObject == (Object)null || (Object)(object)curObject.ObjectWrapper != (Object)null) { continue; } curObject.ClearQuickbeltState(); if (curObject.Slots == null || curObject.Slots.Length == 0) { continue; } for (int k = 0; k < curObject.Slots.Length; k++) { if ((Object)(object)curObject.Slots[k] != (Object)null && (Object)(object)curObject.Slots[k].CurObject != (Object)null) { curObject.Slots[k].CurObject.ClearQuickbeltState(); } } } } public static void PlayAudio(PlayAudioEnum type, bool pitchVariation = false) { AudioClip val = null; val = (AudioClip)(type switch { PlayAudioEnum.Confirm => (!Object.op_Implicit((Object)(object)TGM_Scene.instance.audioConfirm)) ? instance.audioConfirm : TGM_Scene.instance.audioConfirm, PlayAudioEnum.Fail => (!Object.op_Implicit((Object)(object)TGM_Scene.instance.audioFail)) ? instance.audioFail : TGM_Scene.instance.audioFail, PlayAudioEnum.Rearm => (!Object.op_Implicit((Object)(object)TGM_Scene.instance.audioRearm)) ? instance.audioRearm : TGM_Scene.instance.audioRearm, PlayAudioEnum.Point => (!Object.op_Implicit((Object)(object)TGM_Scene.instance.audioPoint)) ? instance.audioPoint : TGM_Scene.instance.audioPoint, PlayAudioEnum.Elimination => (!Object.op_Implicit((Object)(object)TGM_Scene.instance.audioElimination)) ? instance.audioElimination : TGM_Scene.instance.audioElimination, PlayAudioEnum.TeamWon => (!Object.op_Implicit((Object)(object)TGM_Scene.instance.audioTeamWon)) ? instance.audioTeamWon : TGM_Scene.instance.audioTeamWon, PlayAudioEnum.TeamLost => (!Object.op_Implicit((Object)(object)TGM_Scene.instance.audioTeamLost)) ? instance.audioTeamLost : TGM_Scene.instance.audioTeamLost, PlayAudioEnum.ObjectiveFriendlyCaptured => (!Object.op_Implicit((Object)(object)TGM_Scene.instance.audioObjectiveFriendlyCaptured)) ? instance.audioObjectiveFriendlyCaptured : TGM_Scene.instance.audioObjectiveFriendlyCaptured, PlayAudioEnum.ObjectiveEnemyCaptured => (!Object.op_Implicit((Object)(object)TGM_Scene.instance.audioObjectiveEnemyCaptured)) ? instance.audioObjectiveEnemyCaptured : TGM_Scene.instance.audioObjectiveEnemyCaptured, PlayAudioEnum.TeamDraw => (!Object.op_Implicit((Object)(object)TGM_Scene.instance.audioTeamDraw)) ? instance.audioTeamDraw : TGM_Scene.instance.audioTeamDraw, _ => (!Object.op_Implicit((Object)(object)TGM_Scene.instance.audioPress)) ? instance.audioPress : TGM_Scene.instance.audioPress, }); if (pitchVariation) { instance.globalAudio.pitch = Random.Range(0.975f, 1.025f); } else { instance.globalAudio.pitch = 1f; } if ((Object)(object)val != (Object)null) { instance.globalAudio.PlayOneShot(val); } } public static void PlayBackground(AudioClip clip) { instance.backgroundAudio.clip = clip; instance.backgroundAudio.loop = true; instance.backgroundAudio.Play(); } public static void PlayCustomAudio(AudioClip clip) { instance.globalAudio.PlayOneShot(clip); } } public class TGM_ModLoader { [CompilerGenerated] private sealed class d__7 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; private string 5__1; private AssetBundleRequest 5__2; private AssetBundleCreateRequest 5__3; private AssetBundle 5__4; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__7(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { 5__1 = null; 5__2 = null; 5__3 = null; 5__4 = null; <>1__state = -2; } private bool MoveNext() { switch (<>1__state) { default: return false; case 0: <>1__state = -1; if (assetsLoading || timeout > Time.time) { return false; } assetsLoading = true; 5__1 = Paths.PluginPath + "/Packer-Teams_Game_Mode/teamgamemode.tgm"; if (!File.Exists(5__1)) { 5__1 = Paths.PluginPath + "/Teams_Game_Mode/teamgamemode.tgm"; } Debug.Log((object)5__1); if (!loadedAssets) { 5__3 = AssetBundle.LoadFromFileAsync(5__1); <>2__current = 5__3; <>1__state = 1; return true; } goto IL_0125; case 1: <>1__state = -1; 5__4 = 5__3.assetBundle; if ((Object)(object)5__4 == (Object)null) { TGMPlugin.Logger.LogMessage((object)"Failed to load Teams Game Mode AssetBundle"); return false; } tgmBundle = 5__4; 5__3 = null; 5__4 = null; goto IL_0125; case 2: { <>1__state = -1; if (5__2 == null) { TGMPlugin.Logger.LogMessage((object)"Missing TGM Assets"); return false; } tgmAssets = 5__2.asset as TGM_Assets; loadedAssets = true; assetsLoading = false; timeout = Time.time + 10f; return false; } IL_0125: 5__2 = tgmBundle.LoadAssetWithSubAssetsAsync("TeamsGameMode"); <>2__current = 5__2; <>1__state = 2; return true; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } public static TGM_Assets tgmAssets; public static AssetBundle tgmBundle; public static bool assetsLoading = false; public static bool loadedAssets = false; public static float timeout = 0f; public static List playerTeams = new List(); public static List sosigTeams = new List(); public static List profiles = new List(); public static Dictionary loadedTextures = new Dictionary(); public static IEnumerator LoadAssets() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__7(0); } public static void LoadPlayerTeams() { List list = Directory.GetFiles(Paths.PluginPath, "*.pttgm", SearchOption.AllDirectories).ToList(); if (list.Count == 0) { TGMPlugin.Logger.LogMessage((object)"No Player Teams were found!"); return; } playerTeams.Clear(); for (int i = 0; i < list.Count; i++) { using StreamReader streamReader = new StreamReader(list[i]); string text = streamReader.ReadToEnd(); TGM_PlayerTeam tGM_PlayerTeam; try { tGM_PlayerTeam = JsonUtility.FromJson(text); } catch (Exception ex) { TGMPlugin.Logger.LogMessage((object)ex.Message); break; } playerTeams.Add(tGM_PlayerTeam); string text2 = list[i]; text2 = text2.Replace("pttgm", "png"); tGM_PlayerTeam.thumbnail = LoadSprite(text2); for (int j = 0; j < tGM_PlayerTeam.playerClasses.Length; j++) { string directoryName = Path.GetDirectoryName(text2); tGM_PlayerTeam.playerClasses[j].thumbnail = LoadSprite(directoryName + "\\" + tGM_PlayerTeam.playerClasses[j].spriteName); } TGMPlugin.Logger.LogMessage((object)("Loaded Player Team - " + tGM_PlayerTeam.name)); } } public static void LoadSosigTeams() { List list = Directory.GetFiles(Paths.PluginPath, "*.sttgm", SearchOption.AllDirectories).ToList(); if (list.Count == 0) { TGMPlugin.Logger.LogMessage((object)"No Sosig Teams were found!"); return; } sosigTeams.Clear(); for (int i = 0; i < list.Count; i++) { using StreamReader streamReader = new StreamReader(list[i]); string text = streamReader.ReadToEnd(); TGM_SosigTeam tGM_SosigTeam; try { tGM_SosigTeam = JsonUtility.FromJson(text); } catch (Exception ex) { TGMPlugin.Logger.LogMessage((object)ex.Message); break; } sosigTeams.Add(tGM_SosigTeam); string text2 = list[i]; text2 = text2.Replace("sttgm", "png"); tGM_SosigTeam.thumbnail = LoadSprite(text2); TGMPlugin.Logger.LogMessage((object)("Loaded Sosig Team - " + tGM_SosigTeam.name)); } } public static bool SaveProfile(string saveName) { //IL_020e: Unknown result type (might be due to invalid IL or missing references) //IL_02c2: Unknown result type (might be due to invalid IL or missing references) if (TGM_Profile.profile == null) { return false; } TGM_Profile.profile.name = CleanFileName(saveName); if (TGM_Profile.profile.name == "Profile") { return false; } TGM_Profile.profile.gamemode = TGM_Manager.instance.gamemode.name; for (int i = 0; i < TGM_Manager.instance.team.Length; i++) { TGM_Profile.profile.sosigTeams[i] = sosigTeams[TGM_Manager.instance.team[i].sosigTeam].name; TGM_Profile.profile.playerTeams[i] = playerTeams[TGM_Manager.instance.team[i].playerTeam].name; TGM_Profile.profile.sosigLimit[i] = TGM_Manager.instance.team[i].sosigLimit; TGM_Profile.profile.scoreGoal[i] = TGM_Manager.instance.team[i].scoreGoal; } TGM_Profile.profile.gameSettings = new List(); for (int j = 0; j < TGM_Settings.gameSettings.Count; j++) { TGM_Profile.profile.gameSettings.Add(TGM_Settings.gameSettings[j].value); } TGM_Profile.profile.gamemodeSettings = new List(); for (int k = 0; k < TGM_Settings.gamemodeSettings.Count; k++) { TGM_Profile.profile.gamemodeSettings.Add(TGM_Settings.gamemodeSettings[k].value); } bool flag = false; string text = Paths.PluginPath + "\\Packer-Teams_Game_Mode\\"; string text2 = text + saveName + ".protgm"; try { if (!Directory.Exists(text)) { Directory.CreateDirectory(text); } } catch (Exception ex) { SM.PlayGlobalUISound((GlobalUISound)2, ((Component)GM.CurrentPlayerBody).transform.position); TGMPlugin.Logger.LogMessage((object)("Failed Saving Profile - " + ex.Message)); return false; } try { if (!File.Exists(text2)) { FileStream fileStream = File.Create(text2); fileStream.Close(); } TGMPlugin.Logger.LogMessage((object)("Writing to " + text2)); using (StreamWriter streamWriter = new StreamWriter(text2, append: false)) { string value = JsonUtility.ToJson((object)TGM_Profile.profile, true); streamWriter.Write(value); streamWriter.Close(); } flag = true; } catch (Exception ex2) { SM.PlayGlobalUISound((GlobalUISound)2, ((Component)GM.CurrentPlayerBody).transform.position); TGMPlugin.Logger.LogError((object)("Failed Saving Profile - " + ex2.Message)); flag = false; } return flag; } private static string CleanFileName(string fileName) { return Path.GetInvalidFileNameChars().Aggregate(fileName, (string current, char c) => current.Replace(c.ToString(), string.Empty)); } public static List LoadProfiles() { //IL_00e6: Unknown result type (might be due to invalid IL or missing references) profiles.Clear(); List list = Directory.GetFiles(Paths.PluginPath, "*.protgm", SearchOption.AllDirectories).ToList(); if (list.Count == 0) { TGMPlugin.Logger.LogMessage((object)"No profiles found"); return null; } for (int i = 0; i < list.Count; i++) { try { using StreamReader streamReader = new StreamReader(list[i]); string text = streamReader.ReadToEnd(); TGM_Profile tGM_Profile = JsonUtility.FromJson(text); if (tGM_Profile != null) { profiles.Add(tGM_Profile); TGMPlugin.Logger.LogMessage((object)("Loaded External Profile - " + tGM_Profile.name)); } else { TGMPlugin.Logger.LogMessage((object)("Failed to Load External Profile, is it a valid json? - " + i)); } } catch (Exception ex) { SM.PlayGlobalUISound((GlobalUISound)2, ((Component)GM.CurrentPlayerBody).transform.position); TGMPlugin.Logger.LogMessage((object)ex.Message); return null; } } TGM_ProfileMenu.instance.PopulateProfiles(); return profiles; } public static int GetGamemodeIndex(string gamemodeName) { for (int i = 0; i < TGM_Manager.instance.gamemodes.Count; i++) { if (TGM_Manager.instance.gamemodes[i].name == gamemodeName) { return i; } } return 0; } public static int GetSosigTeamIndex(string teamName) { for (int i = 0; i < sosigTeams.Count; i++) { if (sosigTeams[i].name == teamName) { return i; } } return 0; } public static int GetPlayerTeamIndex(string teamName) { for (int i = 0; i < playerTeams.Count; i++) { if (playerTeams[i].name == teamName) { return i; } } return 0; } public static Sprite LoadSprite(string path) { //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Expected O, but got Unknown Texture2D value = null; loadedTextures.TryGetValue(path, out value); if ((Object)(object)value == (Object)null) { if (File.Exists(path) && (Object)(object)value == (Object)null) { byte[] array = File.ReadAllBytes(path); value = new Texture2D(2, 2); value.LoadImage(array); ((Object)value).name = path; } if ((Object)(object)value == (Object)null) { TGMPlugin.Logger.LogError((object)("Texture Not Found: " + path)); return null; } loadedTextures.Add(path, value); } return Sprite.Create(value, new Rect(0f, 0f, (float)((Texture)value).width, (float)((Texture)value).height), new Vector2(0f, 0f), 100f); } } public class TGM_Network { [CompilerGenerated] private static class <>O { public static UpdateHandlerDelegate <0>__GameSettings_Receiver; public static UpdateHandlerDelegate <1>__RequestSettings_Receiver; public static UpdateHandlerDelegate <2>__Gameplay_Receiver; public static UpdateHandlerDelegate <3>__AdjustScores_Receiver; public static UpdateHandlerDelegate <4>__SpawnPlayers_Receiver; } private static CustomConnection connectionGameSettings; private static CustomConnection connectionRequestSettings; private static CustomConnection connectionGameplay; private static CustomConnection connectionAdjustScores; private static CustomConnection connectionSpawnPlayers; private static float SpawnplayersTimeout = 1f; public static void Setup() { //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Expected O, but got Unknown //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Expected O, but got Unknown //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Expected O, but got Unknown //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Expected O, but got Unknown //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Expected O, but got Unknown //IL_0120: Unknown result type (might be due to invalid IL or missing references) //IL_0125: Unknown result type (might be due to invalid IL or missing references) //IL_012b: Expected O, but got Unknown //IL_0155: Unknown result type (might be due to invalid IL or missing references) //IL_015a: Unknown result type (might be due to invalid IL or missing references) //IL_0160: Expected O, but got Unknown TGMPlugin.Logger.LogMessage((object)"Network Setup"); connectionGameSettings = Tools.CreateCustomConnection("TGM_GameSettings"); CustomConnection obj = connectionGameSettings; object obj2 = <>O.<0>__GameSettings_Receiver; if (obj2 == null) { UpdateHandlerDelegate val = GameSettings_Receiver; <>O.<0>__GameSettings_Receiver = val; obj2 = (object)val; } obj.ClientHandlerEvent += (UpdateHandlerDelegate)obj2; connectionRequestSettings = Tools.CreateCustomConnection("TGM_RequestSettings"); CustomConnection obj3 = connectionRequestSettings; object obj4 = <>O.<1>__RequestSettings_Receiver; if (obj4 == null) { UpdateHandlerDelegate val2 = RequestSettings_Receiver; <>O.<1>__RequestSettings_Receiver = val2; obj4 = (object)val2; } obj3.ServerHandlerEvent += (UpdateHandlerDelegate)obj4; connectionGameplay = Tools.CreateCustomConnection("TGM_Gameplay"); CustomConnection obj5 = connectionGameplay; object obj6 = <>O.<2>__Gameplay_Receiver; if (obj6 == null) { UpdateHandlerDelegate val3 = Gameplay_Receiver; <>O.<2>__Gameplay_Receiver = val3; obj6 = (object)val3; } obj5.ServerHandlerEvent += (UpdateHandlerDelegate)obj6; CustomConnection obj7 = connectionGameplay; object obj8 = <>O.<2>__Gameplay_Receiver; if (obj8 == null) { UpdateHandlerDelegate val4 = Gameplay_Receiver; <>O.<2>__Gameplay_Receiver = val4; obj8 = (object)val4; } obj7.ClientHandlerEvent += (UpdateHandlerDelegate)obj8; connectionAdjustScores = Tools.CreateCustomConnection("TGM_AdjustScores"); CustomConnection obj9 = connectionAdjustScores; object obj10 = <>O.<3>__AdjustScores_Receiver; if (obj10 == null) { UpdateHandlerDelegate val5 = AdjustScores_Receiver; <>O.<3>__AdjustScores_Receiver = val5; obj10 = (object)val5; } obj9.ServerHandlerEvent += (UpdateHandlerDelegate)obj10; CustomConnection obj11 = connectionAdjustScores; object obj12 = <>O.<3>__AdjustScores_Receiver; if (obj12 == null) { UpdateHandlerDelegate val6 = AdjustScores_Receiver; <>O.<3>__AdjustScores_Receiver = val6; obj12 = (object)val6; } obj11.ClientHandlerEvent += (UpdateHandlerDelegate)obj12; connectionSpawnPlayers = Tools.CreateCustomConnection("TGM_SpawnPlayers"); CustomConnection obj13 = connectionSpawnPlayers; object obj14 = <>O.<4>__SpawnPlayers_Receiver; if (obj14 == null) { UpdateHandlerDelegate val7 = SpawnPlayers_Receiver; <>O.<4>__SpawnPlayers_Receiver = val7; obj14 = (object)val7; } obj13.ServerHandlerEvent += (UpdateHandlerDelegate)obj14; } public static void OnDestroyed() { //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Expected O, but got Unknown //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Expected O, but got Unknown //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Expected O, but got Unknown //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Expected O, but got Unknown //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Expected O, but got Unknown //IL_0120: Unknown result type (might be due to invalid IL or missing references) //IL_0125: Unknown result type (might be due to invalid IL or missing references) //IL_012b: Expected O, but got Unknown if (connectionGameSettings != null) { CustomConnection obj = connectionGameSettings; object obj2 = <>O.<0>__GameSettings_Receiver; if (obj2 == null) { UpdateHandlerDelegate val = GameSettings_Receiver; <>O.<0>__GameSettings_Receiver = val; obj2 = (object)val; } obj.ClientHandlerEvent -= (UpdateHandlerDelegate)obj2; } if (connectionRequestSettings != null) { CustomConnection obj3 = connectionRequestSettings; object obj4 = <>O.<1>__RequestSettings_Receiver; if (obj4 == null) { UpdateHandlerDelegate val2 = RequestSettings_Receiver; <>O.<1>__RequestSettings_Receiver = val2; obj4 = (object)val2; } obj3.ServerHandlerEvent -= (UpdateHandlerDelegate)obj4; } if (connectionGameplay != null) { CustomConnection obj5 = connectionGameplay; object obj6 = <>O.<2>__Gameplay_Receiver; if (obj6 == null) { UpdateHandlerDelegate val3 = Gameplay_Receiver; <>O.<2>__Gameplay_Receiver = val3; obj6 = (object)val3; } obj5.ServerHandlerEvent -= (UpdateHandlerDelegate)obj6; } if (connectionGameplay != null) { CustomConnection obj7 = connectionGameplay; object obj8 = <>O.<2>__Gameplay_Receiver; if (obj8 == null) { UpdateHandlerDelegate val4 = Gameplay_Receiver; <>O.<2>__Gameplay_Receiver = val4; obj8 = (object)val4; } obj7.ClientHandlerEvent -= (UpdateHandlerDelegate)obj8; } if (connectionAdjustScores != null) { CustomConnection obj9 = connectionAdjustScores; object obj10 = <>O.<3>__AdjustScores_Receiver; if (obj10 == null) { UpdateHandlerDelegate val5 = AdjustScores_Receiver; <>O.<3>__AdjustScores_Receiver = val5; obj10 = (object)val5; } obj9.ServerHandlerEvent -= (UpdateHandlerDelegate)obj10; } if (connectionAdjustScores != null) { CustomConnection obj11 = connectionAdjustScores; object obj12 = <>O.<3>__AdjustScores_Receiver; if (obj12 == null) { UpdateHandlerDelegate val6 = AdjustScores_Receiver; <>O.<3>__AdjustScores_Receiver = val6; obj12 = (object)val6; } obj11.ClientHandlerEvent -= (UpdateHandlerDelegate)obj12; } } private static void GameSettings_Receiver(int clientID, PacketData packet) { if (!Tools.ServerRunning() || Tools.IsHost()) { return; } TGMPlugin.Logger.LogMessage((object)"Game Settings Received"); int num = packet.ReadInt(true); if (num != -1) { TGM_MainMenu.instance.SelectGamemode(num); } TGM_Manager.instance.SetGameState((TGM_Manager.GameStateEnum)packet.ReadInt(true)); for (int i = 0; i < TGM_Settings.gameSettings.Count; i++) { if (!TGM_Settings.gameSettings[i].localOnly) { TGM_Settings.SetSetting((TGMSettingEnum)i, packet.ReadInt(true)); } } for (int j = 0; j < TGM_Settings.gamemodeSettings.Count; j++) { TGM_Settings.SetModeSetting(j, packet.ReadInt(true)); } for (int k = 0; k < TGM_Manager.instance.team.Length; k++) { TGM_Manager.instance.team[k].playerTeam = packet.ReadInt(true); TGM_Manager.instance.team[k].sosigTeam = packet.ReadInt(true); TGM_Manager.instance.team[k].scoreGoal = packet.ReadInt(true); TGM_Manager.instance.team[k].currentScore = packet.ReadInt(true); TGM_Manager.instance.team[k].currentKills = packet.ReadInt(true); TGM_Manager.instance.team[k].currentSpawnArea.index = packet.ReadInt(true); } for (int l = 0; l < TGM_Scene.instance.areas.Length; l++) { TGM_Scene.instance.areas[l].iff = packet.ReadInt(true); } TGM_MainMenu.instance.UpdateSettings(); } public static void GameSettings_ToClients() { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Expected O, but got Unknown if (!Tools.ServerRunning() || connectionGameSettings == null) { return; } PacketData val = new PacketData(connectionGameSettings.ToClientID); if (TGM_Manager.instance.gamemode != null) { val.Write(TGM_Manager.instance.gamemode.index); } else { val.Write(-1); } val.Write((int)TGM_Manager.gameState); for (int i = 0; i < TGM_Settings.gameSettings.Count; i++) { if (!TGM_Settings.gameSettings[i].localOnly) { val.Write(TGM_Settings.GetSetting((TGMSettingEnum)i)); } } for (int j = 0; j < TGM_Settings.gamemodeSettings.Count; j++) { val.Write(TGM_Settings.GetModeSetting(j)); } for (int k = 0; k < TGM_Manager.instance.team.Length; k++) { val.Write(TGM_Manager.instance.team[k].playerTeam); val.Write(TGM_Manager.instance.team[k].sosigTeam); val.Write(TGM_Manager.instance.team[k].scoreGoal); val.Write(TGM_Manager.instance.team[k].currentScore); val.Write(TGM_Manager.instance.team[k].currentKills); val.Write(TGM_Manager.instance.team[k].currentSpawnArea.index); } for (int l = 0; l < TGM_Scene.instance.areas.Length; l++) { val.Write(TGM_Scene.instance.areas[l].iff); } TGMPlugin.Logger.LogMessage((object)"Game Settings Sent to Clients"); connectionGameSettings.ServerToClients(val); } private static void RequestSettings_Receiver(int clientID, PacketData packet) { if (Tools.ServerRunning() && !Tools.IsHost()) { TGMPlugin.Logger.LogMessage((object)"Request Settings Received"); GameSettings_ToClients(); } } public static void RequestSettings_ToServer() { //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Expected O, but got Unknown if (Tools.ServerRunning() && connectionRequestSettings != null) { TGMPlugin.Logger.LogMessage((object)"Request Settings Sent"); PacketData val = new PacketData(connectionRequestSettings.ToServerID); connectionRequestSettings.ClientToServer(val); } } private static void Gameplay_Receiver(int clientID, PacketData packet) { if (Tools.ServerRunning() && Tools.IsClient()) { TGMPlugin.Logger.LogMessage((object)"Gameplay Received"); for (int i = 0; i < TGM_Manager.instance.team.Length; i++) { TGM_Manager.instance.team[i].respawnTime = Time.time + packet.ReadFloat(true); TGM_Manager.instance.team[i].scoreGoal = packet.ReadInt(true); TGM_Manager.instance.team[i].currentScore = packet.ReadInt(true); TGM_Manager.instance.team[i].currentKills = packet.ReadInt(true); TGM_Manager.instance.team[i].currentSpawnArea.index = packet.ReadInt(true); } for (int j = 0; j < TGM_Scene.instance.areas.Length; j++) { TGM_Scene.instance.areas[j].iff = packet.ReadInt(true); } } } public static void Gameplay_ToServer() { //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Expected O, but got Unknown if (Tools.ServerRunning() && connectionGameplay != null) { TGMPlugin.Logger.LogMessage((object)"Gameplay To Server"); PacketData val = new PacketData(connectionGameplay.ToServerID); connectionGameplay.ClientToServer(val); } } public static void Gameplay_ToClients() { //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Expected O, but got Unknown if (Tools.ServerRunning()) { TGMPlugin.Logger.LogMessage((object)"Gameplay To Clients"); PacketData val = new PacketData(connectionGameplay.ToClientID); for (int i = 0; i < TGM_Manager.instance.team.Length; i++) { val.Write(Time.time - TGM_Manager.instance.team[i].respawnTime); val.Write(TGM_Manager.instance.team[i].scoreGoal); val.Write(TGM_Manager.instance.team[i].currentScore); val.Write(TGM_Manager.instance.team[i].currentKills); val.Write(TGM_Manager.instance.team[i].currentSpawnArea.index); } for (int j = 0; j < TGM_Scene.instance.areas.Length; j++) { val.Write(TGM_Scene.instance.areas[j].iff); } connectionGameplay.ServerToClients(val); } } private static void AdjustScores_Receiver(int clientID, PacketData packet) { if (Tools.ServerRunning()) { TGMPlugin.Logger.LogMessage((object)"Adjust Scores Received"); int teamIFF = packet.ReadInt(true); int amount = packet.ReadInt(true); TGM_Manager.instance.gamemode.AdjustTeamScore(teamIFF, amount, network: false); } } public static void AdjustScores_ToServer(int teamIFF, int amount) { //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Expected O, but got Unknown if (Tools.ServerRunning() && connectionAdjustScores != null) { TGMPlugin.Logger.LogMessage((object)"Adjust Scores To Server"); PacketData val = new PacketData(connectionAdjustScores.ToServerID); val.Write(teamIFF); val.Write(amount); connectionAdjustScores.ClientToServer(val); } } public static void AdjustScores_ToClients(int teamIFF, int amount) { //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Expected O, but got Unknown if (Tools.ServerRunning() && connectionAdjustScores != null) { TGMPlugin.Logger.LogMessage((object)"Adjust Scores To Clients"); PacketData val = new PacketData(connectionAdjustScores.ToClientID); val.Write(teamIFF); val.Write(amount); connectionAdjustScores.ServerToClients(val); } } private static void SpawnPlayers_Receiver(int clientID, PacketData packet) { if (Tools.ServerRunning() && !Tools.IsHost()) { for (int i = 0; i < TGM_Manager.instance.team.Length; i++) { TGM_Manager.instance.team[i].Respawn(); } } } public static void SpawnPlayers_ToClients() { //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Expected O, but got Unknown if (Tools.ServerRunning() && connectionSpawnPlayers != null && !(Time.time < SpawnplayersTimeout)) { SpawnplayersTimeout = Time.time + 1f; PacketData val = new PacketData(connectionSpawnPlayers.ToClientID); connectionSpawnPlayers.ServerToClients(val); } } } public class TGM_Scene : MonoBehaviour { public delegate void SceneLoadedDelegate(); [Serializable] public class TeamSpawnRoom { [Tooltip("For array display only, does nothing")] public string name; [Tooltip("The area which a player can respawn, can be scaled")] public Transform respawnArea; [Tooltip("The Starting area for this Team")] public TGM_Area startSpawnArea; [Tooltip("The time between wave respawns for this team")] public float teamSpawnTime = 5f; [Tooltip("What Sosig Team is auto selected on this map")] public string defaultPlayerTeam = "Meatcenaries"; [Tooltip("What Player Team is auto selected on this map")] public string defaultSosigTeam = "Meat Fortress Meatcenaries"; } [CompilerGenerated] private sealed class d__35 : IEnumerator, IDisposable, IEnumerator { private int <>1__state; private object <>2__current; public TGM_Scene <>4__this; private TGM_Manager 5__1; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__35(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { 5__1 = null; <>1__state = -2; } private bool MoveNext() { //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Expected O, but got Unknown //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Unknown result type (might be due to invalid IL or missing references) //IL_0101: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_011a: Unknown result type (might be due to invalid IL or missing references) //IL_013a: Unknown result type (might be due to invalid IL or missing references) //IL_014a: Unknown result type (might be due to invalid IL or missing references) //IL_015e: Unknown result type (might be due to invalid IL or missing references) //IL_0163: Unknown result type (might be due to invalid IL or missing references) //IL_016f: Unknown result type (might be due to invalid IL or missing references) //IL_0179: Expected O, but got Unknown //IL_01ba: Unknown result type (might be due to invalid IL or missing references) //IL_01c4: Expected O, but got Unknown switch (<>1__state) { default: return false; case 0: <>1__state = -1; <>2__current = ((MonoBehaviour)<>4__this).StartCoroutine(TGM_ModLoader.LoadAssets()); <>1__state = 1; return true; case 1: <>1__state = -1; 5__1 = Object.Instantiate(TGM_ModLoader.tgmAssets.manager); <>2__current = (object)new WaitForEndOfFrame(); <>1__state = 2; return true; case 2: <>1__state = -1; Object.Instantiate(TGM_ModLoader.tgmAssets.mainMenu, <>4__this.mainMenu.position, <>4__this.mainMenu.rotation * Quaternion.Euler(0f, 180f, 0f)); Object.Instantiate(TGM_ModLoader.tgmAssets.teamSetup, <>4__this.teamSetupMenu.position, <>4__this.teamSetupMenu.rotation * Quaternion.Euler(0f, 180f, 0f)); Object.Instantiate(TGM_ModLoader.tgmAssets.profileMenu, <>4__this.profilesMenu.position, <>4__this.profilesMenu.rotation * Quaternion.Euler(0f, 180f, 0f)); <>2__current = (object)new WaitForEndOfFrame(); <>1__state = 3; return true; case 3: <>1__state = -1; Object.Instantiate(TGM_ModLoader.tgmAssets.spectator); Object.Instantiate(TGM_ModLoader.tgmAssets.compass); Object.Instantiate(TGM_ModLoader.tgmAssets.endScreen); <>2__current = (object)new WaitForEndOfFrame(); <>1__state = 4; return true; case 4: <>1__state = -1; if (TGM_Scene.SceneLoadedEvent != null) { TGM_Scene.SceneLoadedEvent(); } TGM_Manager.instance.Setup(); if ((Object)(object)<>4__this.audioBackground != (Object)null) { TGM_Manager.PlayBackground(<>4__this.audioBackground); } return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } public static TGM_Scene instance; [Header("Scene Setup")] public TeamSpawnRoom[] teams = new TeamSpawnRoom[2]; public TGM_Area[] areas = new TGM_Area[2]; public ObstacleAvoidanceType avoidanceQuailty = (ObstacleAvoidanceType)1; public Transform playerResetPoint; [HideInInspector] public Vector3 defaultResetPosition; [HideInInspector] public Quaternion defaultResetRotation; [Header("Menus")] public Transform mainMenu; public Transform teamSetupMenu; public Transform profilesMenu; public Transform itemSpawner; [Header("Spectator")] public Transform[] spectatorStaticCameras; [Header("Gamemode Prefabs")] public GameObject rushCapturePrefab; [Header("Audio Overwrite")] [Tooltip("Start Game, or spawn items etc")] public AudioClip audioConfirm; [Tooltip("Regular Button Press")] public AudioClip audioPress; [Tooltip("Something broke or didn't accept input")] public AudioClip audioFail; [Tooltip("Rearm Player")] public AudioClip audioRearm; [Tooltip("Player's Team Objective point change")] public AudioClip audioPoint; [Tooltip("Get Kill")] public AudioClip audioElimination; [Tooltip("Player's Team Won")] public AudioClip audioTeamWon; [Tooltip("Player's Team Lost")] public AudioClip audioTeamLost; [Tooltip("Both Teams Draw")] public AudioClip audioTeamDraw; [Tooltip("An objective has been captured by a friendly")] public AudioClip audioObjectiveFriendlyCaptured; [Tooltip("An objective has been captured by the enemy")] public AudioClip audioObjectiveEnemyCaptured; [Tooltip("A capture point or objective is being captured")] public AudioClip audioCapturing; [Tooltip("Background Audio that plays, should loop")] public AudioClip audioBackground; public static event SceneLoadedDelegate SceneLoadedEvent; public static TeamSpawnRoom Team(int iff) { if ((Object)(object)instance == (Object)null || instance.teams == null || instance.teams.Length >= iff) { return null; } return instance.teams[iff]; } public static Transform GetTeamSpawnRoomTransform(int team) { return instance.teams[team].respawnArea; } private void Awake() { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) instance = this; defaultResetPosition = playerResetPoint.position; defaultResetRotation = playerResetPoint.rotation; } private void Start() { ((MonoBehaviour)this).StartCoroutine(Setup()); } public IEnumerator Setup() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__35(0) { <>4__this = this }; } public static void UpdateAllAreas() { for (int i = 0; i < instance.areas.Length; i++) { instance.areas[i].UpdateArea(); } } private void OnDrawGizmos() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_018a: Unknown result type (might be due to invalid IL or missing references) //IL_018f: Unknown result type (might be due to invalid IL or missing references) //IL_019c: Unknown result type (might be due to invalid IL or missing references) //IL_01a3: Unknown result type (might be due to invalid IL or missing references) //IL_01b4: Unknown result type (might be due to invalid IL or missing references) //IL_01bf: Unknown result type (might be due to invalid IL or missing references) //IL_01ca: Unknown result type (might be due to invalid IL or missing references) //IL_01cf: Unknown result type (might be due to invalid IL or missing references) //IL_01e0: Unknown result type (might be due to invalid IL or missing references) //IL_01eb: Unknown result type (might be due to invalid IL or missing references) //IL_01ff: Unknown result type (might be due to invalid IL or missing references) //IL_0204: Unknown result type (might be due to invalid IL or missing references) //IL_020f: Unknown result type (might be due to invalid IL or missing references) //IL_0214: Unknown result type (might be due to invalid IL or missing references) //IL_021f: Unknown result type (might be due to invalid IL or missing references) //IL_0224: Unknown result type (might be due to invalid IL or missing references) //IL_0246: Unknown result type (might be due to invalid IL or missing references) //IL_024b: Unknown result type (might be due to invalid IL or missing references) //IL_0258: Unknown result type (might be due to invalid IL or missing references) //IL_025f: Unknown result type (might be due to invalid IL or missing references) //IL_0270: Unknown result type (might be due to invalid IL or missing references) //IL_027b: Unknown result type (might be due to invalid IL or missing references) //IL_0286: Unknown result type (might be due to invalid IL or missing references) //IL_028b: Unknown result type (might be due to invalid IL or missing references) //IL_029c: Unknown result type (might be due to invalid IL or missing references) //IL_02a7: Unknown result type (might be due to invalid IL or missing references) //IL_02bb: Unknown result type (might be due to invalid IL or missing references) //IL_02c0: Unknown result type (might be due to invalid IL or missing references) //IL_02cb: Unknown result type (might be due to invalid IL or missing references) //IL_02d0: Unknown result type (might be due to invalid IL or missing references) //IL_02db: Unknown result type (might be due to invalid IL or missing references) //IL_02e0: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_0302: Unknown result type (might be due to invalid IL or missing references) //IL_0307: Unknown result type (might be due to invalid IL or missing references) //IL_0314: Unknown result type (might be due to invalid IL or missing references) //IL_031b: Unknown result type (might be due to invalid IL or missing references) //IL_032c: Unknown result type (might be due to invalid IL or missing references) //IL_0337: Unknown result type (might be due to invalid IL or missing references) //IL_0342: Unknown result type (might be due to invalid IL or missing references) //IL_0347: Unknown result type (might be due to invalid IL or missing references) //IL_0358: Unknown result type (might be due to invalid IL or missing references) //IL_0363: Unknown result type (might be due to invalid IL or missing references) //IL_0377: Unknown result type (might be due to invalid IL or missing references) //IL_037c: Unknown result type (might be due to invalid IL or missing references) //IL_0387: Unknown result type (might be due to invalid IL or missing references) //IL_038c: Unknown result type (might be due to invalid IL or missing references) //IL_0397: Unknown result type (might be due to invalid IL or missing references) //IL_039c: Unknown result type (might be due to invalid IL or missing references) //IL_03d2: Unknown result type (might be due to invalid IL or missing references) //IL_03e3: Unknown result type (might be due to invalid IL or missing references) //IL_041a: Unknown result type (might be due to invalid IL or missing references) //IL_041f: Unknown result type (might be due to invalid IL or missing references) //IL_0421: Unknown result type (might be due to invalid IL or missing references) //IL_0423: Unknown result type (might be due to invalid IL or missing references) //IL_042b: Unknown result type (might be due to invalid IL or missing references) //IL_042d: Unknown result type (might be due to invalid IL or missing references) //IL_042f: Unknown result type (might be due to invalid IL or missing references) //IL_0436: Unknown result type (might be due to invalid IL or missing references) //IL_043b: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_014c: Unknown result type (might be due to invalid IL or missing references) Color green = Color.green; green.a = 0.2f; Gizmos.color = green; if (teams != null) { for (int i = 0; i < teams.Length; i++) { if (teams[i] != null && (Object)(object)teams[i].respawnArea != (Object)null) { Gizmos.DrawCube(teams[i].respawnArea.position, teams[i].respawnArea.lossyScale); } } } green = Color.yellow; green.a = 0.2f; Gizmos.color = green; for (int j = 0; j < areas.Length; j++) { if ((Object)(object)areas[j] != (Object)null && j + 1 < areas.Length && (Object)(object)areas[j + 1] != (Object)null && (Object)(object)areas[j].capturePoint != (Object)null && (Object)(object)areas[j + 1].capturePoint != (Object)null) { Gizmos.DrawLine(areas[j].capturePoint.position, areas[j + 1].capturePoint.position); } } if ((Object)(object)mainMenu != (Object)null) { green = Color.grey; green.a = 0.2f; Gizmos.color = green; Gizmos.matrix = Matrix4x4.identity; Gizmos.DrawLine(mainMenu.position, mainMenu.position + mainMenu.forward); Gizmos.matrix = Matrix4x4.TRS(mainMenu.position, mainMenu.rotation, new Vector3(1.92f, 1.08f, 0.01f)); Gizmos.DrawCube(Vector3.zero, Vector3.one); Gizmos.DrawWireCube(Vector3.zero, Vector3.one); } if ((Object)(object)teamSetupMenu != (Object)null) { green = Color.grey; green.a = 0.2f; Gizmos.color = green; Gizmos.matrix = Matrix4x4.identity; Gizmos.DrawLine(teamSetupMenu.position, teamSetupMenu.position + teamSetupMenu.forward); Gizmos.matrix = Matrix4x4.TRS(teamSetupMenu.position, teamSetupMenu.rotation, new Vector3(1.92f, 1.08f, 0.01f)); Gizmos.DrawCube(Vector3.zero, Vector3.one); Gizmos.DrawWireCube(Vector3.zero, Vector3.one); } if ((Object)(object)profilesMenu != (Object)null) { green = Color.grey; green.a = 0.2f; Gizmos.color = green; Gizmos.matrix = Matrix4x4.identity; Gizmos.DrawLine(profilesMenu.position, profilesMenu.position + profilesMenu.forward); Gizmos.matrix = Matrix4x4.TRS(profilesMenu.position, profilesMenu.rotation, new Vector3(0.96f, 1.08f, 0.01f)); Gizmos.DrawCube(Vector3.zero, Vector3.one); Gizmos.DrawWireCube(Vector3.zero, Vector3.one); } if ((Object)(object)itemSpawner != (Object)null) { Gizmos.color = new Color(0.4f, 0.4f, 0.9f, 0.5f); Gizmos.matrix = itemSpawner.localToWorldMatrix; Vector3 val = default(Vector3); ((Vector3)(ref val))..ctor(0f, 0.7f, 0.25f); Vector3 val2 = default(Vector3); ((Vector3)(ref val2))..ctor(2.3f, 1.2f, 0.5f); Vector3 forward = Vector3.forward; Gizmos.DrawCube(val, val2); Gizmos.DrawLine(val, val + forward * 0.5f); } } private void OnValidate() { if (teams != null) { if (teams.Length < 2) { List list = teams.ToList(); int num = 2 - list.Count; for (int i = 0; i < num; i++) { list.Add(new TeamSpawnRoom()); } teams = list.ToArray(); } teams[0].name = "Red"; teams[1].name = "Blue"; } if (areas == null) { return; } if (areas.Length < 2) { List list2 = areas.ToList(); int num2 = 2 - list2.Count; for (int j = 0; j < num2; j++) { list2.Add(new TGM_Area()); } areas = list2.ToArray(); } for (int k = 0; k < areas.Length; k++) { if ((Object)(object)areas[k] != (Object)null) { areas[k].index = k; } } } } public class TGM_Sosigs { public static void OrderSosigToLocations(Sosig sosig, List locations, SosigMoveSpeed moveSpeed = 4) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) List list = new List { locations[2], locations[2] }; locations.RemoveAt(2); sosig.CommandPathTo(locations, list, 1f, Vector2.one * 4f, 20f, moveSpeed, (PathLoopType)4, (List)null, 0.2f, 1f, true, 50f); sosig.UpdateAssaultPoint(locations[0]); sosig.SetCurrentOrder((SosigOrder)7); } } public class TGM_Button : MonoBehaviour { public Text[] texts; public Button[] buttons; public int index = -1; public int value = 0; public GameObject go; public void SelectClass() { TGM_Manager.PlayAudio(TGM_Manager.PlayAudioEnum.Rearm); TGM_ClassMenu.instance.SpawnClass(index); } public void AdjustSettingValue(int amount) { TGM_Settings.Setting setting = TGM_Settings.gameSettings[index]; amount *= setting.intIncrement; if (setting.intMax == 0 && setting.intMin == 0) { value += amount; } else if (value + amount > setting.intMax) { value = setting.intMin; } else if (value + amount < setting.intMin) { value = setting.intMax; } else { value += amount; } TGM_Manager.PlayAudio(TGM_Manager.PlayAudioEnum.Press); TGM_Settings.SetSetting((TGMSettingEnum)index, value); TGM_MainMenu.instance.UpdateSettings(); } public void AdjustGamemodeSettingValue(int amount) { TGM_Settings.Setting setting = TGM_Settings.gamemodeSettings[index]; amount *= setting.intIncrement; if (setting.intMax == 0 && setting.intMin == 0) { value += amount; } else if (value + amount > setting.intMax) { value = setting.intMin; } else if (value + amount < setting.intMin) { value = setting.intMax; } else { value += amount; } TGM_Manager.PlayAudio(TGM_Manager.PlayAudioEnum.Press); TGM_Settings.SetModeSetting(index, value); TGM_MainMenu.instance.UpdateSettings(); } public void ChooseGamemode() { TGM_MainMenu.instance.SelectGamemode(index); TGM_Manager.PlayAudio(TGM_Manager.PlayAudioEnum.Confirm); } public void SelectProfile() { TGM_ProfileMenu.instance.SetProfile(texts[0].text); } public void SelectBrowserItem() { TGM_TeamSetup.instance.SelectBrowser(index); } public void JoinTeam(int iff) { //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) Tools.SetLocalPlayerIFF(iff); TGM_Manager.PlayAudio(TGM_Manager.PlayAudioEnum.Confirm); if (iff == -3) { TGM_MainMenu.instance.OpenPage(TGM_MainMenu.Page.Spectator); return; } Transform teamSpawnRoomTransform = TGM_Scene.GetTeamSpawnRoomTransform(iff); Object.Instantiate(TGM_ModLoader.tgmAssets.classMenu, teamSpawnRoomTransform.position + Vector3.up * 1.25f + teamSpawnRoomTransform.forward * (teamSpawnRoomTransform.localScale.z / 2f), teamSpawnRoomTransform.rotation); Global.TeleportToPoint(Global.GetValidSpawnPoint(teamSpawnRoomTransform)); GM.CurrentSceneSettings.DeathResetPoint = TGM_Scene.instance.playerResetPoint; TGM_Scene.instance.playerResetPoint.SetPositionAndRotation(teamSpawnRoomTransform.position, teamSpawnRoomTransform.rotation); TGM_Manager.instance.gamemode.OnJoinTeam(iff); TGM_Scene.UpdateAllAreas(); TGM_Manager.instance.team[iff].AddAllyMarkers(); TGM_MainMenu.instance.OpenPage(TGM_MainMenu.Page.JoinTeam); } public void AdjustSpectatorTarget(int amount) { TGM_Spectator.instance.GetNextTarget(amount); } private void OnValidate() { } public void SelectMap() { TGM_MapSelector.instance.SelectMap(index); } } public class TGM_ClassMenu : MonoBehaviour { public static TGM_ClassMenu instance; [Header("Menu")] public Text spawnButtonText; public GameObject buttonPrefab; public Transform buttonContent; private List buttons = new List(); [Header("Spawn Points")] public Transform[] mainSpawns; public Transform[] ammoSpawns; private float spawnRange = 0.1f; public static int spawnMainIndex; public static float spawnMainOffset; public static void ResetSpawnPoints() { spawnMainIndex = 0; spawnMainOffset = 0f; } private void Awake() { if ((Object)(object)instance != (Object)null) { Object.Destroy((Object)(object)((Component)instance).gameObject); } instance = this; } private void Start() { Setup(TGM_Manager.instance.team[GM.CurrentPlayerBody.GetPlayerIFF()].GetPlayerTeam().playerClasses); } private void Update() { int playerIFF = GM.CurrentPlayerBody.GetPlayerIFF(); if (TGM_Manager.instance.localPlayer.awaitingRespawn) { switch (TGM_Manager.gameState) { case TGM_Manager.GameStateEnum.Pregame: spawnButtonText.text = Mathf.Abs(Time.time - TGM_Manager.instance.startTime).ToString("F2"); break; case TGM_Manager.GameStateEnum.Gameplay: spawnButtonText.text = Mathf.Abs(Time.time - TGM_Manager.instance.team[playerIFF].respawnTime).ToString("F2"); break; } } } public void Setup(TGM_PlayerClass[] classes) { ClearButtons(); int playerIFF = GM.CurrentPlayerBody.GetPlayerIFF(); if (playerIFF != 0 && playerIFF != 1) { return; } int currentKills = TGM_Manager.instance.team[playerIFF].currentKills; for (int i = 0; i < classes.Length; i++) { bool flag = false; if (classes[i].maxKills == -1 || currentKills <= classes[i].maxKills) { flag = true; } bool flag2 = false; if (classes[i].minKills == -1 || currentKills >= classes[i].minKills) { flag2 = true; } if (flag2 && flag) { TGM_Button component = Object.Instantiate(buttonPrefab, buttonContent).GetComponent(); ((Component)component).gameObject.SetActive(true); component.texts[0].text = classes[i].name; ((Selectable)component.buttons[0]).image.sprite = classes[i].thumbnail; component.index = i; buttons.Add(component); } } } public void ClearButtons() { for (int i = 0; i < buttons.Count; i++) { if ((Object)(object)buttons[i] != (Object)null) { Object.Destroy((Object)(object)((Component)buttons[i]).gameObject); } } buttons.Clear(); } public void JoinRespawn() { //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) if (!TGM_Manager.instance.localPlayer.awaitingRespawn) { TGM_Manager.instance.localPlayer.awaitingRespawn = true; SM.PlayGlobalUISound((GlobalUISound)0, ((Component)GM.CurrentPlayerBody).transform.position); } else { TGM_Manager.instance.localPlayer.awaitingRespawn = false; spawnButtonText.text = "Spawn"; SM.PlayGlobalUISound((GlobalUISound)1, ((Component)GM.CurrentPlayerBody).transform.position); } } public void LeaveTeam() { for (int i = 0; i < TGM_Manager.instance.team.Length; i++) { for (int j = 0; j < TGM_Manager.instance.team[i].sosigsData.Count; j++) { if (TGM_Manager.instance.team[i].sosigsData != null && (Object)(object)TGM_Manager.instance.team[i].sosigsData[j].allyMarker != (Object)null) { Object.Destroy((Object)(object)TGM_Manager.instance.team[i].sosigsData[j].allyMarker); TGM_Manager.instance.team[i].sosigsData[j].allyMarker = null; } } } TGM_Manager.PlayAudio(TGM_Manager.PlayAudioEnum.Confirm); TGM_Manager.LeaveTeam(); } public void SpawnClass(int id) { if (id < 0) { TGMPlugin.Logger.LogMessage((object)"Teams Game ModeSpawn Class is -1 or less and will not be spawned"); return; } int playerIFF = GM.CurrentPlayerBody.GetPlayerIFF(); if (TGM_Settings.GetSetting(TGMSettingEnum.SpawnLock) == 2) { GM.CurrentSceneSettings.IsSpawnLockingEnabled = TGM_Manager.instance.team[playerIFF].GetPlayerTeam().playerClasses[id].canSpawnLock; } else { GM.CurrentSceneSettings.IsSpawnLockingEnabled = TGM_Settings.GetSetting(TGMSettingEnum.SpawnLock) == 1; } int num = TGM_Settings.GetSetting(TGMSettingEnum.PlayerHealth); if (num == 0) { num = TGM_Manager.instance.team[playerIFF].GetPlayerTeam().playerClasses[id].playerHealth; } GM.CurrentPlayerBody.SetHealthThreshold((float)num); GM.CurrentPlayerBody.Health = num; TGM_Manager.instance.localPlayer.DestroyPlayersItems(); TGM_PlayerClass.SubClass subClass = TGM_Manager.instance.team[playerIFF].GetPlayerTeam().playerClasses[id].subClasses[Random.Range(0, TGM_Manager.instance.team[playerIFF].GetPlayerTeam().playerClasses[id].subClasses.Length)]; for (int i = 0; i < subClass.items.Length; i++) { SpawnItemSet(subClass.items[i], playerIFF); } } public static Transform GetMainSpawnPoint() { Transform result = instance.mainSpawns[spawnMainIndex]; spawnMainIndex++; if (spawnMainIndex >= instance.mainSpawns.Length) { spawnMainIndex = 0; spawnMainOffset += 0.5f; } return result; } public static void SpawnItemSet(TGM_PlayerClass.ItemSet itemSet, int iff) { //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Invalid comparison between Unknown and I4 //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Invalid comparison between Unknown and I4 //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_016b: Unknown result type (might be due to invalid IL or missing references) //IL_017c: Unknown result type (might be due to invalid IL or missing references) //IL_0181: Unknown result type (might be due to invalid IL or missing references) //IL_0185: Unknown result type (might be due to invalid IL or missing references) //IL_0273: Unknown result type (might be due to invalid IL or missing references) //IL_0278: Unknown result type (might be due to invalid IL or missing references) //IL_0282: Unknown result type (might be due to invalid IL or missing references) //IL_0287: Unknown result type (might be due to invalid IL or missing references) //IL_028c: Unknown result type (might be due to invalid IL or missing references) //IL_0296: Unknown result type (might be due to invalid IL or missing references) //IL_029e: Unknown result type (might be due to invalid IL or missing references) //IL_02a3: Unknown result type (might be due to invalid IL or missing references) //IL_02b8: Unknown result type (might be due to invalid IL or missing references) //IL_02bd: Unknown result type (might be due to invalid IL or missing references) //IL_02c1: Unknown result type (might be due to invalid IL or missing references) //IL_039e: Unknown result type (might be due to invalid IL or missing references) //IL_03a5: Unknown result type (might be due to invalid IL or missing references) //IL_040a: Unknown result type (might be due to invalid IL or missing references) //IL_040f: Unknown result type (might be due to invalid IL or missing references) //IL_0419: Unknown result type (might be due to invalid IL or missing references) //IL_0421: Unknown result type (might be due to invalid IL or missing references) //IL_0426: Unknown result type (might be due to invalid IL or missing references) //IL_042b: Unknown result type (might be due to invalid IL or missing references) //IL_0430: Unknown result type (might be due to invalid IL or missing references) //IL_043a: Unknown result type (might be due to invalid IL or missing references) //IL_0442: Unknown result type (might be due to invalid IL or missing references) //IL_0447: Unknown result type (might be due to invalid IL or missing references) //IL_045c: Unknown result type (might be due to invalid IL or missing references) //IL_0461: Unknown result type (might be due to invalid IL or missing references) //IL_0465: Unknown result type (might be due to invalid IL or missing references) FVRObject objectID = Global.GetObjectID(itemSet.objectID[Random.Range(0, itemSet.objectID.Length)]); for (int i = 0; i < itemSet.objectCount; i++) { if (itemSet.team != -1 && itemSet.team != iff) { continue; } FVRPhysicalObject val = null; if (!itemSet.uniformObjects && i != 0) { objectID = Global.GetObjectID(itemSet.objectID[Random.Range(0, itemSet.objectID.Length)]); } Transform val2 = (((int)objectID.Category == 1 || (int)objectID.Category == 10) ? GetMainSpawnPoint() : instance.ammoSpawns[3]); FVRObject fvrObject = objectID; Vector3 position = val2.position + Vector3.up * spawnMainOffset; Quaternion rotation = val2.rotation; val = Global.SpawnFVRObject(fvrObject, position, ((Quaternion)(ref rotation)).eulerAngles); if (!((Object)(object)val != (Object)null)) { break; } TGM_Manager.instance.localPlayer.playersItems.Add(val); if (itemSet.requiredSecondaryPieces && objectID.RequiredSecondaryPieces != null && objectID.RequiredSecondaryPieces.Count > 0) { for (int j = 0; j < objectID.RequiredSecondaryPieces.Count; j++) { if ((Object)(object)objectID.RequiredSecondaryPieces[j] != (Object)null) { FVRObject fvrObject2 = objectID.RequiredSecondaryPieces[j]; Vector3 position2 = instance.ammoSpawns[4].position; rotation = instance.ammoSpawns[4].rotation; FVRPhysicalObject item = Global.SpawnFVRObject(fvrObject2, position2, ((Quaternion)(ref rotation)).eulerAngles); TGM_Manager.instance.localPlayer.playersItems.Add(item); } } } if (itemSet.ammoCount <= 0) { continue; } FVRObject value = null; FVRObject value2 = null; FVRPhysicalObject[] array = (FVRPhysicalObject[])(object)new FVRPhysicalObject[itemSet.ammoCount]; FVRPhysicalObject val3 = null; if (itemSet.ammoContainerID != "") { if (!IM.OD.TryGetValue(itemSet.ammoContainerID, out value)) { TGMPlugin.Logger.LogWarning((object)("Could not find ammo container: " + itemSet.ammoContainerID)); } if ((Object)(object)value != (Object)null) { for (int k = 0; k < itemSet.ammoCount; k++) { int num = k; FVRObject fvrObject3 = value; Vector3 position3 = instance.ammoSpawns[spawnMainIndex].position + Vector3.up * 0.1f + Vector3.right * 0.1f * (float)k; rotation = instance.ammoSpawns[spawnMainIndex].rotation; array[num] = Global.SpawnFVRObject(fvrObject3, position3, ((Quaternion)(ref rotation)).eulerAngles); if ((Object)(object)array[k] != (Object)null) { TGM_Manager.instance.localPlayer.playersItems.Add(array[k]); } } } } if (!(itemSet.cartridgeID != "")) { continue; } if (!IM.OD.TryGetValue(itemSet.cartridgeID, out value2)) { TGMPlugin.Logger.LogWarning((object)("Could not find cartridge: " + itemSet.cartridgeID)); } if (!((Object)(object)value2 != (Object)null)) { continue; } bool flag = false; if ((Object)(object)value != (Object)null && array != null && array.Length != 0) { for (int l = 0; l < itemSet.ammoCount; l++) { if (value2.RoundType == value.RoundType) { Global.ReloadWithCartridge(array[l], value2); } else { flag = true; } } } else { flag = true; } if (!flag) { continue; } for (int m = 0; m < itemSet.ammoCount; m++) { FVRObject fvrObject4 = value2; Vector3 position4 = instance.ammoSpawns[spawnMainIndex].position + Vector3.up * 0.05f * (float)m + -Vector3.right * 0.025f * (float)m; rotation = instance.ammoSpawns[spawnMainIndex].rotation; val3 = Global.SpawnFVRObject(fvrObject4, position4, ((Quaternion)(ref rotation)).eulerAngles); if ((Object)(object)val3 != (Object)null) { TGM_Manager.instance.localPlayer.playersItems.Add(val3); } } } } private void OnDrawGizmos() { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00e8: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) for (int i = 0; i < mainSpawns.Length; i++) { if (Object.op_Implicit((Object)(object)mainSpawns[i])) { Gizmos.DrawLine(-mainSpawns[i].forward * spawnRange + mainSpawns[i].position, mainSpawns[i].forward * spawnRange + mainSpawns[i].position); } } for (int j = 0; j < ammoSpawns.Length; j++) { if ((Object)(object)ammoSpawns[j] != (Object)null) { Gizmos.DrawLine(-ammoSpawns[j].forward * spawnRange + ammoSpawns[j].position, ammoSpawns[j].forward * spawnRange + ammoSpawns[j].position); } } } } public class TGM_Compass : MonoBehaviour { [Serializable] public class Marker { public Transform parent; public Transform marker; public Image thumbnail; public Transform target; public void LookAtTarget() { //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)target == (Object)null) { instance.markers.Remove(this); Object.Destroy((Object)(object)((Component)parent).gameObject); return; } parent.LookAt(target.position); parent.rotation = Quaternion.LookRotation(target.position - parent.position, Vector3.up); Transform obj = parent; Quaternion rotation = parent.rotation; obj.rotation = Quaternion.Euler(0f, ((Quaternion)(ref rotation)).eulerAngles.y, 0f); } } public enum MarkerEnum { Attack, Defend, Objective, Person } public static TGM_Compass instance; public float distance = 0.25f; [Header("Health")] public Image healthFill; public Color healthFull = Color.green; public Color healthEmpty = Color.red; [Header("Stats")] public Text killText; public Text deathText; public Text scoreText; public Text gameTimeText; [Header("Teams")] public Text redScoreText; public Text blueScoreText; public Transform scorePanel; public Image[] cornerBackgrounds; [Header("Markers")] public List markers = new List(); public GameObject markerPrefab; public Sprite[] markerSprites; [Header("Direction")] public Transform directionNeedle; public Text directionText; public void SetMarkerTarget(Marker marker, Transform newTarget, MarkerEnum type) { marker.target = newTarget; marker.thumbnail.sprite = markerSprites[(int)type]; } public void CreateMarker(Sprite sprite, Color color, Transform lookAt) { //IL_007a: Unknown result type (might be due to invalid IL or missing references) GameObject val = Object.Instantiate(markerPrefab, markerPrefab.transform.parent); TGM_Button component = val.GetComponent(); Marker marker = new Marker { parent = val.transform, marker = component.go.transform, thumbnail = component.go.GetComponent(), target = lookAt }; val.SetActive(true); marker.thumbnail.sprite = sprite; ((Graphic)marker.thumbnail).color = color; markers.Add(marker); } public static void ClearAllMarkers() { for (int num = instance.markers.Count - 1; num >= 0; num--) { Object.Destroy((Object)(object)((Component)instance.markers[num].parent).gameObject); } instance.markers.Clear(); } private void Awake() { instance = this; } private void Update() { //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_019b: Unknown result type (might be due to invalid IL or missing references) //IL_01a1: Unknown result type (might be due to invalid IL or missing references) //IL_01ab: Unknown result type (might be due to invalid IL or missing references) //IL_01c6: Unknown result type (might be due to invalid IL or missing references) //IL_01dd: Unknown result type (might be due to invalid IL or missing references) //IL_020c: Unknown result type (might be due to invalid IL or missing references) //IL_0221: Unknown result type (might be due to invalid IL or missing references) //IL_0256: Unknown result type (might be due to invalid IL or missing references) //IL_0272: Unknown result type (might be due to invalid IL or missing references) //IL_0287: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)TGM_Manager.instance == (Object)null || TGM_Manager.gameState == TGM_Manager.GameStateEnum.GamemodeSelect || TGM_Manager.gameState == TGM_Manager.GameStateEnum.Setup) { return; } if (!TGM_MainMenu.handSide) { ((Component)this).transform.position = GM.CurrentPlayerBody.LeftHand.position - GM.CurrentPlayerBody.LeftHand.forward * distance; } else { ((Component)this).transform.position = GM.CurrentPlayerBody.RightHand.position - GM.CurrentPlayerBody.RightHand.forward * distance; } ((Component)this).transform.rotation = Quaternion.identity; for (int i = 0; i < markers.Count; i++) { if (markers[i] != null) { markers[i].LookAtTarget(); } } killText.text = TGM_Manager.instance.localPlayer.kills.ToString(); deathText.text = TGM_Manager.instance.localPlayer.deaths.ToString(); int iff = TGM_Manager.instance.localPlayer.iff; if (iff == 0 || iff == 1) { scoreText.text = TGM_Manager.instance.team[iff].currentScore.ToString(); } healthFill.fillAmount = GM.GetPlayerHealth(); ((Graphic)healthFill).color = Color.Lerp(healthEmpty, healthFull, GM.GetPlayerHealth()); directionNeedle.LookAt(GM.CurrentPlayerBody.Head.position); directionText.text = Mathf.FloorToInt(directionNeedle.eulerAngles.y).ToString(); directionNeedle.rotation = Quaternion.Euler(90f, directionNeedle.eulerAngles.y + 180f, 0f); if (((Component)scorePanel).gameObject.activeSelf) { scorePanel.LookAt(GM.CurrentPlayerBody.Head.position); scorePanel.rotation = Quaternion.Euler(90f, scorePanel.eulerAngles.y + 180f, 0f); redScoreText.text = TGM_Manager.instance.team[0].currentScore.ToString(); blueScoreText.text = TGM_Manager.instance.team[1].currentScore.ToString(); } } } public class TGM_EndScreen : MonoBehaviour { public static TGM_EndScreen instance; public GameObject endScreen; public LayerMask hitLayers; public float screenDistance = 3f; private RaycastHit rayHit; [Header("UI")] public Text[] endScores; public Text resultText; public Image resultBackground; public Image[] teamPanels; public Text[] teamNames; public Text killText; public Text deathText; public Text timeText; public Text playerScoreText; private void Awake() { if ((Object)(object)instance != (Object)null) { Object.Destroy((Object)(object)((Component)instance).gameObject); } instance = this; SetEndScreen(state: false); } public void SetEndScreen(bool state) { //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Unknown result type (might be due to invalid IL or missing references) endScreen.SetActive(state); if (state) { if (TGM_Manager.instance.gamemode.winIFF == -1) { resultText.text = "DRAW"; ((Graphic)resultBackground).color = Color.grey; } else { resultText.text = ((TGM_Manager.instance.gamemode.winIFF == GM.CurrentPlayerBody.GetPlayerIFF()) ? "VICTORY" : "DEFEAT"); ((Graphic)resultBackground).color = TGM_Manager.instance.team[TGM_Manager.instance.gamemode.winIFF].color; } ((Graphic)teamPanels[0]).color = TGM_Manager.instance.team[0].color; ((Graphic)teamPanels[1]).color = TGM_Manager.instance.team[1].color; teamNames[0].text = TGM_Manager.instance.team[0].teamName; teamNames[1].text = TGM_Manager.instance.team[1].teamName; killText.text = TGM_Manager.instance.localPlayer.kills.ToString(); deathText.text = TGM_Manager.instance.localPlayer.deaths.ToString(); playerScoreText.text = TGM_Manager.instance.localPlayer.score.ToString(); for (int i = 0; i < TGM_Manager.instance.team.Length; i++) { endScores[i].text = TGM_Manager.instance.team[i].currentScore.ToString(); } TimeSpan timeSpan = TimeSpan.FromSeconds(Time.time - TGM_Manager.instance.startTime); timeText.text = timeSpan.Minutes + ":" + timeSpan.Seconds; } } private void FixedUpdate() { //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) if (endScreen.activeSelf) { if (TGM_Manager.gameState != TGM_Manager.GameStateEnum.Postgame) { endScreen.SetActive(false); } if (Physics.Linecast(GM.CurrentPlayerBody.Head.position, GM.CurrentPlayerBody.Head.position + GM.CurrentPlayerBody.Head.forward * screenDistance, ref rayHit, LayerMask.op_Implicit(hitLayers))) { endScreen.transform.position = ((RaycastHit)(ref rayHit)).point; } else { endScreen.transform.position = GM.CurrentPlayerBody.Head.position + GM.CurrentPlayerBody.Head.forward * screenDistance; } } } } public class TGM_MainMenu : MonoBehaviour { public enum Page { Gamemode, GameSettings, JoinTeam, WaitForHost, Spectator } public delegate void PreGameDelegate(); public static TGM_MainMenu instance; public static bool handSide; [Header("Pages")] public GameObject[] pages; public GameObject startButton; [Header("Page: Game Settings")] public GameObject gameSettingPrefab; public GameObject gamemodeSettingPrefab; public GameObject requestButton; public Text gamemodeTitleText; [Header("Page: Team Select")] public Image[] teamButtons; public Text[] teamButtonText; [Header("Page: Spectator")] public Text spectateName; [Header("Gamemode Window")] public GameObject gamemodeBtnPrefab; [HideInInspector] public TGM_Button[] gamemodesBtns; public static event PreGameDelegate PreGamemodeSetupEvent; private void Awake() { instance = this; } public void Setup() { if (TGM_MainMenu.PreGamemodeSetupEvent != null) { TGM_MainMenu.PreGamemodeSetupEvent(); } SetupGamemodes(); SetupSettings(); if (Tools.IsClient() && Tools.ServerRunning()) { requestButton.SetActive(true); startButton.SetActive(false); } else { requestButton.SetActive(false); startButton.SetActive(true); } TGM_Manager.instance.SetGameState(TGM_Manager.GameStateEnum.GamemodeSelect); } public void SetupGamemodes() { for (int i = 0; i < TGM_Manager.instance.gamemodes.Count; i++) { if (TGM_Manager.instance.gamemodes[i].IsGamemodeValid()) { TGM_Gamemode tGM_Gamemode = TGM_Manager.instance.gamemodes[i]; TGM_Button component = Object.Instantiate(gamemodeBtnPrefab, gamemodeBtnPrefab.transform.parent).GetComponent(); ((Component)component).gameObject.SetActive(true); if ((Object)(object)tGM_Gamemode.thumbnail != (Object)null) { ((Selectable)component.buttons[0]).image.sprite = tGM_Gamemode.thumbnail; } component.index = i; } } } public void SelectGamemode(int index) { TGMPlugin.Logger.LogMessage((object)("Gamemode Selected: " + TGM_Manager.instance.gamemodes[index].name)); if (TGM_Manager.instance.gamemode != TGM_Manager.instance.gamemodes[index]) { TGM_Manager.instance.gamemode = TGM_Manager.instance.gamemodes[index]; TGM_Manager.instance.gamemode.LoadDefaultProfile(); } if ((Object)(object)gamemodeTitleText != (Object)null) { gamemodeTitleText.text = TGM_Manager.instance.gamemode.name; } for (int i = 0; i < TGM_Manager.instance.team.Length; i++) { TGM_Manager.instance.team[i].ResetTeamTracking(); } TGM_Manager.instance.localPlayer.ResetPlayer(); UpdateSettings(); TGM_Manager.instance.SetGameState(TGM_Manager.GameStateEnum.Setup); } private void OnDisable() { } private void SetupSettings() { for (int i = 0; i < TGM_Settings.gameSettings.Count; i++) { TGM_Button component = Object.Instantiate(gameSettingPrefab, gameSettingPrefab.transform.parent).GetComponent(); ((Component)component).gameObject.SetActive(true); component.index = i; TGM_Settings.gameSettings[i].button = component; } UpdateSettings(); } public void SetupGamemodeSettings() { for (int i = 0; i < TGM_Settings.gamemodeSettings.Count; i++) { TGM_Button component = Object.Instantiate(gamemodeSettingPrefab, gamemodeSettingPrefab.transform.parent).GetComponent(); ((Component)component).gameObject.SetActive(true); component.index = i; TGM_Settings.gamemodeSettings[i].button = component; } UpdateSettings(); } public void UpdateSettings() { for (int i = 0; i < TGM_Settings.gameSettings.Count; i++) { TGM_Button button = TGM_Settings.gameSettings[i].button; if ((Object)(object)button == (Object)null) { continue; } button.value = TGM_Settings.gameSettings[i].value; button.texts[0].text = TGM_Settings.gameSettings[i].description; if (TGM_Settings.gameSettings[i].type == TGM_Settings.Setting.SettingType.Strings) { button.texts[1].text = TGM_Settings.gameSettings[i].settings[TGM_Settings.gameSettings[i].value]; } else if (TGM_Settings.gameSettings[i].type == TGM_Settings.Setting.SettingType.FirstString) { if (TGM_Settings.gameSettings[i].value == 0) { button.texts[1].text = TGM_Settings.gameSettings[i].settings[TGM_Settings.gameSettings[i].value]; } else { button.texts[1].text = TGM_Settings.gameSettings[i].value.ToString(); } } else { button.texts[1].text = TGM_Settings.gameSettings[i].value.ToString(); } if (Tools.IsClient() && !TGM_Settings.gameSettings[i].localOnly) { ((Component)button.buttons[0]).gameObject.SetActive(false); ((Component)button.buttons[1]).gameObject.SetActive(false); } } for (int j = 0; j < TGM_Settings.gamemodeSettings.Count; j++) { TGM_Button button2 = TGM_Settings.gamemodeSettings[j].button; if ((Object)(object)button2 == (Object)null) { continue; } button2.value = TGM_Settings.gamemodeSettings[j].value; button2.texts[0].text = TGM_Settings.gamemodeSettings[j].description; if (TGM_Settings.gamemodeSettings[j].type == TGM_Settings.Setting.SettingType.Strings) { button2.texts[1].text = TGM_Settings.gamemodeSettings[j].settings[TGM_Settings.gamemodeSettings[j].value]; } else if (TGM_Settings.gamemodeSettings[j].type == TGM_Settings.Setting.SettingType.FirstString) { if (TGM_Settings.gamemodeSettings[j].value == 0) { button2.texts[1].text = TGM_Settings.gamemodeSettings[j].settings[TGM_Settings.gamemodeSettings[j].value]; } else { button2.texts[1].text = TGM_Settings.gamemodeSettings[j].value.ToString(); } } else { button2.texts[1].text = TGM_Settings.gamemodeSettings[j].value.ToString(); } if (Tools.IsClient() && !TGM_Settings.gamemodeSettings[j].localOnly) { ((Component)button2.buttons[0]).gameObject.SetActive(false); ((Component)button2.buttons[1]).gameObject.SetActive(false); } } for (int k = 0; k < TGM_Manager.instance.team.Length; k++) { TGM_TeamSetup.instance.scoreCountText[k].text = TGM_Manager.instance.team[k].scoreGoal.ToString(); TGM_TeamSetup.instance.sosigsCountText[k].text = TGM_Manager.instance.team[k].sosigLimit.ToString(); if (TGM_ModLoader.playerTeams == null || TGM_ModLoader.playerTeams.Count == 0) { break; } int playerTeam = TGM_Manager.instance.team[k].playerTeam; if (playerTeam >= 0 && playerTeam < TGM_ModLoader.playerTeams.Count) { TGM_TeamSetup.instance.playerTeamTitles[k].text = TGM_ModLoader.playerTeams[playerTeam].name; TGM_TeamSetup.instance.playerTeamDescriptions[k].text = TGM_ModLoader.playerTeams[playerTeam].description; TGM_TeamSetup.instance.playerTeamThumbnails[k].sprite = TGM_ModLoader.playerTeams[playerTeam].thumbnail; } int sosigTeam = TGM_Manager.instance.team[k].sosigTeam; if (sosigTeam >= 0 && sosigTeam < TGM_ModLoader.sosigTeams.Count) { TGM_TeamSetup.instance.sosigTeamTitles[k].text = TGM_ModLoader.sosigTeams[sosigTeam].name; TGM_TeamSetup.instance.sosigTeamDescriptions[k].text = TGM_ModLoader.sosigTeams[sosigTeam].description; TGM_TeamSetup.instance.sosigTeamThumbnails[k].sprite = TGM_ModLoader.sosigTeams[sosigTeam].thumbnail; } } if (Tools.ServerRunning() && Tools.IsHost() && TGM_Manager.gameState != 0) { TGM_Network.GameSettings_ToClients(); } } public void RequestSettings() { if (Tools.ServerRunning()) { TGM_Network.RequestSettings_ToServer(); } } public void OpenPage(Page index) { for (int i = 0; i < pages.Length; i++) { pages[i].SetActive(false); } pages[(int)index].SetActive(true); } public void StartGame() { for (int i = 0; i < TGM_Manager.instance.team.Length; i++) { TGM_Team tGM_Team = TGM_Manager.instance.team[i]; tGM_Team.sosigsData.Clear(); for (int j = 0; j < tGM_Team.sosigLimit; j++) { TGM_Player item = new TGM_Player { isSosig = true, playerName = TGM_NameDB.GetRandomName(), iff = i }; tGM_Team.sosigsData.Add(item); } } TGM_Manager.instance.SetGameState(TGM_Manager.GameStateEnum.Pregame); TGMPlugin.Logger.LogMessage((object)"Game Started"); } public void ToggleSpectatorCamera() { if ((Object)(object)GM.CurrentSceneSettings.GetCamObjectPoint() == (Object)(object)((Component)TGM_Spectator.instance.spectatorCamera).transform) { GM.CurrentSceneSettings.SetCamObjectPoint((Transform)null); } else { GM.CurrentSceneSettings.SetCamObjectPoint(((Component)TGM_Spectator.instance.spectatorCamera).transform); } TGM_Manager.PlayAudio(TGM_Manager.PlayAudioEnum.Press); } } public class TGM_MapSelector : MonoBehaviour { public static TGM_MapSelector instance; public Transform buttonContent; private List mapButtons = new List(); public GameObject mapPrefab; private List collectedScenes = new List(); private int pageIndex = 0; public int mapPageCount = 12; [Header("Selected Map")] public Text mapTitle; public Text mapDescription; public RawImage mapThumbnail; private CustomSceneInfo selectedScene; [Header("Take and Hold")] public Texture2D tnhTexture; public GameObject tnhButton; private void Awake() { instance = this; } private void Start() { foreach (CustomSceneInfo customSceneInfo in AtlasPlugin.CustomSceneInfos) { if (customSceneInfo.GameMode == "teamsgamemode" || customSceneInfo.DisplayMode == "teamsgamemode" || customSceneInfo.DisplayName.Contains("TGM")) { collectedScenes.Add(customSceneInfo); } } mapTitle.text = ""; if (collectedScenes.Count != 0) { mapDescription.text = ""; } GenerateMapButtonsFrom(pageIndex); } public void ScrollMaps(int amount) { //IL_0071: Unknown result type (might be due to invalid IL or missing references) pageIndex += amount * mapPageCount; if (pageIndex < 0) { pageIndex = 0; } else if (pageIndex >= collectedScenes.Count) { pageIndex = collectedScenes.Count - 1; } GenerateMapButtonsFrom(pageIndex); SM.PlayGlobalUISound((GlobalUISound)1, ((Component)GM.CurrentPlayerBody).transform.position); } private void GenerateMapButtonsFrom(int i) { for (int j = 0; j < mapButtons.Count; j++) { Object.Destroy((Object)(object)((Component)mapButtons[j]).gameObject); } mapButtons.Clear(); int num = 0; while (i < collectedScenes.Count && num < mapPageCount) { TGM_Button component = Object.Instantiate(mapPrefab, buttonContent).GetComponent(); component.index = i; component.go.GetComponent().texture = (Texture)(object)collectedScenes[i].ThumbnailTexture; component.texts[0].text = collectedScenes[i].DisplayName; ((Component)component).gameObject.SetActive(true); mapButtons.Add(component); i++; num++; } } public void SelectMap(int index) { //IL_0063: Unknown result type (might be due to invalid IL or missing references) selectedScene = collectedScenes[index]; mapTitle.text = selectedScene.DisplayName; mapDescription.text = selectedScene.Description; mapThumbnail.texture = (Texture)(object)selectedScene.ThumbnailTexture; SM.PlayGlobalUISound((GlobalUISound)1, ((Component)GM.CurrentPlayerBody).transform.position); } public void SelectTnH() { //IL_0047: Unknown result type (might be due to invalid IL or missing references) selectedScene = null; mapTitle.text = "Take And Hold"; mapDescription.text = "Game \n- Get Loot!\n- Take Capture Points!\n- Defend Them!\n- Go As Long As You Can!"; mapThumbnail.texture = (Texture)(object)tnhTexture; SM.PlayGlobalUISound((GlobalUISound)1, ((Component)GM.CurrentPlayerBody).transform.position); } public void LaunchMap() { //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) if (selectedScene == null) { if (!(mapTitle.text == "Take And Hold")) { SM.PlayGlobalUISound((GlobalUISound)1, ((Component)GM.CurrentPlayerBody).transform.position); return; } SteamVR_LoadLevel.Begin("TakeAndHold_Lobby_2", false, 0.5f, 0f, 0f, 0f, 1f); } else { AtlasPlugin.LoadCustomScene(selectedScene); } SM.PlayGlobalUISound((GlobalUISound)0, ((Component)GM.CurrentPlayerBody).transform.position); } } public class TGM_ProfileMenu : MonoBehaviour { public static TGM_ProfileMenu instance; public InputField profileInput; public GameObject loadProfileButton; public GameObject profilePrefab; [SerializeField] private List profileButtons = new List(); private void Awake() { instance = this; } public void Setup() { if (Tools.IsClient()) { loadProfileButton.SetActive(false); } TGM_ModLoader.LoadProfiles(); } public void Load() { if (profileInput.text == "") { TGM_Manager.PlayAudio(TGM_Manager.PlayAudioEnum.Fail); return; } for (int i = 0; i < TGM_ModLoader.profiles.Count; i++) { if (TGM_ModLoader.profiles[i].name == profileInput.text) { TGMPlugin.Logger.LogError((object)("Loading Profile - " + TGM_ModLoader.profiles[i].name)); TGM_Profile.profile = TGM_ModLoader.profiles[i]; TGM_MainMenu.instance.SelectGamemode(TGM_ModLoader.GetGamemodeIndex(TGM_Profile.profile.gamemode)); for (int j = 0; j < TGM_Manager.instance.team.Length; j++) { TGM_Manager.instance.team[j].sosigTeam = TGM_ModLoader.GetSosigTeamIndex(TGM_Profile.profile.sosigTeams[j]); TGM_Manager.instance.team[j].playerTeam = TGM_ModLoader.GetPlayerTeamIndex(TGM_Profile.profile.playerTeams[j]); TGM_Manager.instance.team[j].sosigLimit = TGM_Profile.profile.sosigLimit[j]; TGM_Manager.instance.team[j].scoreGoal = TGM_Profile.profile.scoreGoal[j]; } for (int k = 0; k < TGM_Profile.profile.gameSettings.Count; k++) { TGM_Settings.gameSettings[k].value = TGM_Profile.profile.gameSettings[k]; } for (int l = 0; l < TGM_Profile.profile.gamemodeSettings.Count; l++) { TGM_Settings.gamemodeSettings[l].value = TGM_Profile.profile.gamemodeSettings[l]; } TGM_MainMenu.instance.UpdateSettings(); TGM_Manager.PlayAudio(TGM_Manager.PlayAudioEnum.Confirm); return; } } TGM_Manager.PlayAudio(TGM_Manager.PlayAudioEnum.Fail); } public void Save() { if (profileInput.text == "") { TGM_Manager.PlayAudio(TGM_Manager.PlayAudioEnum.Fail); } else if (TGM_ModLoader.SaveProfile(profileInput.text)) { TGM_Manager.PlayAudio(TGM_Manager.PlayAudioEnum.Confirm); TGM_ModLoader.LoadProfiles(); PopulateProfiles(); } else { TGM_Manager.PlayAudio(TGM_Manager.PlayAudioEnum.Fail); } } public void SetProfile(string profileName) { if (profileName != "") { profileInput.text = profileName; TGM_Manager.PlayAudio(TGM_Manager.PlayAudioEnum.Press); } else { TGM_Manager.PlayAudio(TGM_Manager.PlayAudioEnum.Fail); } } public void PopulateProfiles() { for (int i = 0; i < profileButtons.Count; i++) { Object.Destroy((Object)(object)((Component)profileButtons[i]).gameObject); } profileButtons.Clear(); for (int j = 0; j < TGM_ModLoader.profiles.Count; j++) { if (TGM_ModLoader.profiles[j] != null) { TGM_Button component = Object.Instantiate(profilePrefab, profilePrefab.transform.parent).GetComponent(); ((Component)component).gameObject.SetActive(true); component.texts[0].text = TGM_ModLoader.profiles[j].name; profileButtons.Add(component); } } } } public class TGM_Scoreboard : MonoBehaviour { } public class TGM_Spectator : MonoBehaviour { public static TGM_Spectator instance; public int targetPlayerIndex = 0; public Camera spectatorCamera; public int frameRate = 30; private float nextRenderTime = 0f; public Transform target; public Vector3 targetOffset; public LayerMask mask; private RaycastHit hit; private void Awake() { instance = this; } private void Start() { //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) if (TGM_Scene.instance.spectatorStaticCameras != null && TGM_Scene.instance.spectatorStaticCameras.Length != 0 && (Object)(object)TGM_Scene.instance.spectatorStaticCameras[0] != (Object)null) { ((Component)this).transform.SetPositionAndRotation(TGM_Scene.instance.spectatorStaticCameras[0].position, TGM_Scene.instance.spectatorStaticCameras[0].rotation); } spectatorCamera.Render(); } private void FixedUpdate() { //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_012c: Unknown result type (might be due to invalid IL or missing references) //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Unknown result type (might be due to invalid IL or missing references) //IL_0120: Unknown result type (might be due to invalid IL or missing references) //IL_0198: Unknown result type (might be due to invalid IL or missing references) //IL_019d: Unknown result type (might be due to invalid IL or missing references) //IL_01a3: Unknown result type (might be due to invalid IL or missing references) //IL_0160: Unknown result type (might be due to invalid IL or missing references) //IL_016b: Unknown result type (might be due to invalid IL or missing references) //IL_0175: Unknown result type (might be due to invalid IL or missing references) //IL_01b9: Unknown result type (might be due to invalid IL or missing references) if (!TGM_MainMenu.instance.pages[4].activeSelf && (Object)(object)GM.CurrentSceneSettings.GetCamObjectPoint() == (Object)null) { target = null; } else if ((Object)(object)target == (Object)null) { GetNextTarget(1); } if (!((Object)(object)target == (Object)null)) { if (Input.GetKeyDown((KeyCode)275)) { GetNextTarget(1); } if (Input.GetKeyDown((KeyCode)276)) { GetNextTarget(-1); } Vector3 val = target.position + Vector3.up * 1.5f; Vector3 val2 = target.position + Vector3.up * 1.5f + -target.forward * 2f; if (TGM_MainMenu.instance.spectateName.text == "") { ((Component)spectatorCamera).transform.position = val2; } else if (Physics.Linecast(val, val2, ref hit, LayerMask.op_Implicit(mask))) { ((Component)spectatorCamera).transform.position = Vector3.Slerp(((Component)spectatorCamera).transform.position, ((RaycastHit)(ref hit)).point, Time.deltaTime); } else { ((Component)spectatorCamera).transform.position = Vector3.Slerp(((Component)spectatorCamera).transform.position, val2, Time.deltaTime); } ((Component)spectatorCamera).transform.LookAt(val); if (nextRenderTime <= Time.time) { spectatorCamera.Render(); nextRenderTime = Time.time + 1f / (float)frameRate; } } } public void GetNextTarget(int adjust) { target = GetNewTarget(adjust); } private Transform GetNewTarget(int adjust) { //IL_0212: Unknown result type (might be due to invalid IL or missing references) //IL_01ff: Unknown result type (might be due to invalid IL or missing references) targetPlayerIndex += adjust; int num = 0; List list = new List(); for (int i = 0; i < TGM_Manager.instance.team.Length; i++) { for (int j = 0; j < TGM_Manager.instance.team[i].sosigsData.Count; j++) { if ((Object)(object)TGM_Manager.instance.team[i].sosigsData[j].sosig != (Object)null) { list.Add(TGM_Manager.instance.team[i].sosigsData[j]); } } } num = list.Count; if (num == 0) { return null; } int num2 = num + TGM_Scene.instance.spectatorStaticCameras.Length; if (targetPlayerIndex >= num2) { targetPlayerIndex = 0; } else if (targetPlayerIndex < 0) { targetPlayerIndex = num2 - 1; } if (targetPlayerIndex >= num) { int num3 = targetPlayerIndex - num; if ((Object)(object)TGM_Scene.instance.spectatorStaticCameras[num3] != (Object)null) { TGM_MainMenu.instance.spectateName.text = ""; return TGM_Scene.instance.spectatorStaticCameras[num3]; } return null; } if (list[targetPlayerIndex] != null && (Object)(object)list[targetPlayerIndex].sosig != (Object)null) { spectatorCamera.Render(); TGM_MainMenu.instance.spectateName.text = list[targetPlayerIndex].playerName; ((Graphic)TGM_MainMenu.instance.spectateName).color = ((list[targetPlayerIndex].sosig.GetIFF() == 1) ? TGM_Manager.instance.team[1].color : TGM_Manager.instance.team[0].color); return ((Component)list[targetPlayerIndex].sosig).transform; } TGM_MainMenu.instance.spectateName.text = ""; return null; } } public class TGM_TeamSetup : MonoBehaviour { public static TGM_TeamSetup instance; [Header("Browser")] public GameObject browserPanel; public GameObject browserButtonPrefab; public Transform browserContent; public Text browserTitle; public Text browserDescription; public Image browserThumbnail; private List browserButtons = new List(); private int browserTeamID = -1; private int browserMode = 0; private int browserSelectIndex = 0; [Header("Team UI")] public Text[] scoreCountText; public Text[] sosigsCountText; public Image[] playerTeamThumbnails; public Image[] sosigTeamThumbnails; public Text[] playerTeamTitles; public Text[] sosigTeamTitles; public Text[] playerTeamDescriptions; public Text[] sosigTeamDescriptions; public GameObject[] teamObjectiveAdjust; private void Awake() { instance = this; } public void Setup() { for (int i = 0; i < TGM_Manager.instance.team.Length; i++) { if ((Object)(object)TGM_Scene.instance.teams[i].startSpawnArea == (Object)null) { TGMPlugin.Logger.LogError((object)("Map is Missing team " + i + " startSpawnArea !!!")); } else { TGM_Manager.instance.team[i].currentSpawnArea = TGM_Scene.instance.teams[i].startSpawnArea; } } TGM_Scene.UpdateAllAreas(); TGM_MainMenu.instance.UpdateSettings(); } public void AdjustRedTeamScore(int amount) { TGM_Manager.instance.team[0].scoreGoal = Mathf.Clamp(TGM_Manager.instance.team[0].scoreGoal + amount, 1, int.MaxValue); TGM_MainMenu.instance.UpdateSettings(); } public void AdjustRedSosigCount(int amount) { TGM_Manager.instance.team[0].sosigLimit = Mathf.Clamp(TGM_Manager.instance.team[0].sosigLimit + amount, 0, 32); TGM_MainMenu.instance.UpdateSettings(); } public void OpenBrowserRed(int type) { OpenBrowser(type, 0); } public void AdjustBlueTeamScore(int amount) { TGM_Manager.instance.team[1].scoreGoal = Mathf.Clamp(TGM_Manager.instance.team[1].scoreGoal + amount, 1, int.MaxValue); TGM_MainMenu.instance.UpdateSettings(); } public void AdjustBlueSosigCount(int amount) { TGM_Manager.instance.team[1].sosigLimit = Mathf.Clamp(TGM_Manager.instance.team[1].sosigLimit + amount, 0, 32); TGM_MainMenu.instance.UpdateSettings(); } public void OpenBrowserBlue(int type) { OpenBrowser(type, 1); } public void OpenBrowser(int type, int teamID) { TGM_Manager.PlayAudio(TGM_Manager.PlayAudioEnum.Press); browserMode = type; browserTeamID = teamID; for (int num = browserButtons.Count - 1; num >= 0; num--) { if ((Object)(object)browserButtons[num] != (Object)null) { Object.Destroy((Object)(object)((Component)browserButtons[num]).gameObject); } } browserButtons.Clear(); browserPanel.SetActive(true); if (type == 0) { TGM_PlayerTeam tGM_PlayerTeam = TGM_ModLoader.playerTeams[TGM_Manager.instance.team[browserTeamID].playerTeam]; browserTitle.text = tGM_PlayerTeam.name; browserDescription.text = tGM_PlayerTeam.description; browserThumbnail.sprite = tGM_PlayerTeam.thumbnail; for (int i = 0; i < TGM_ModLoader.playerTeams.Count; i++) { TGM_Button component = Object.Instantiate(browserButtonPrefab, browserContent).GetComponent(); ((Component)component).gameObject.SetActive(true); component.index = i; ((Selectable)component.buttons[0]).image.sprite = TGM_ModLoader.playerTeams[i].thumbnail; component.texts[0].text = TGM_ModLoader.playerTeams[i].name; browserButtons.Add(component); } } else { TGM_SosigTeam tGM_SosigTeam = TGM_ModLoader.sosigTeams[TGM_Manager.instance.team[browserTeamID].sosigTeam]; browserTitle.text = tGM_SosigTeam.name; browserDescription.text = tGM_SosigTeam.description; browserThumbnail.sprite = tGM_SosigTeam.thumbnail; for (int j = 0; j < TGM_ModLoader.sosigTeams.Count; j++) { TGM_Button component2 = Object.Instantiate(browserButtonPrefab, browserContent).GetComponent(); ((Component)component2).gameObject.SetActive(true); component2.index = j; ((Selectable)component2.buttons[0]).image.sprite = TGM_ModLoader.sosigTeams[j].thumbnail; component2.texts[0].text = TGM_ModLoader.sosigTeams[j].name; browserButtons.Add(component2); } } } public void SelectBrowser(int i) { TGM_Manager.PlayAudio(TGM_Manager.PlayAudioEnum.Press); browserSelectIndex = i; if (browserMode == 0) { TGM_PlayerTeam tGM_PlayerTeam = TGM_ModLoader.playerTeams[browserSelectIndex]; browserTitle.text = tGM_PlayerTeam.name; browserDescription.text = tGM_PlayerTeam.description; browserThumbnail.sprite = tGM_PlayerTeam.thumbnail; } else { TGM_SosigTeam tGM_SosigTeam = TGM_ModLoader.sosigTeams[browserSelectIndex]; browserTitle.text = tGM_SosigTeam.name; browserDescription.text = tGM_SosigTeam.description; browserThumbnail.sprite = tGM_SosigTeam.thumbnail; } } public void ConfirmBrowser() { TGM_Manager.PlayAudio(TGM_Manager.PlayAudioEnum.Confirm); if (browserMode == 0) { TGM_Manager.instance.team[browserTeamID].playerTeam = browserSelectIndex; } else { TGM_Manager.instance.team[browserTeamID].sosigTeam = browserSelectIndex; } for (int num = browserButtons.Count - 1; num >= 0; num--) { if ((Object)(object)browserButtons[num] != (Object)null) { Object.Destroy((Object)(object)((Component)browserButtons[num]).gameObject); } } browserButtons.Clear(); browserPanel.SetActive(false); TGM_MainMenu.instance.UpdateSettings(); } } }