From 841ab4797ddade7538971a8e1956a90fbde0b896 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=99=AF=E5=A4=A7=E4=BE=A0?= Date: Thu, 26 Oct 2023 23:55:38 +0800 Subject: [PATCH 1/9] update types --- appdata/il2cpp-types.h | 3028 +++------------------------------------- hooks/Doors.cpp | 8 +- used_types.txt | 3 +- user/utility.cpp | 2 +- user/utility.h | 2 +- 5 files changed, 235 insertions(+), 2808 deletions(-) diff --git a/appdata/il2cpp-types.h b/appdata/il2cpp-types.h index aecd9a48..622874ba 100644 --- a/appdata/il2cpp-types.h +++ b/appdata/il2cpp-types.h @@ -4378,17 +4378,19 @@ namespace app #pragma region PlayerOutfitType__Enum #if defined(_CPLUSPLUS_) - enum class PlayerOutfitType__Enum : int32_t - { + enum class PlayerOutfitType__Enum : int32_t { Default = 0x00000000, Shapeshifted = 0x00000001, + HorseWrangler = 0x00000002, + MushroomMixup = 0x00000003, }; #else - enum PlayerOutfitType__Enum - { + enum PlayerOutfitType__Enum { PlayerOutfitType__Enum_Default = 0x00000000, PlayerOutfitType__Enum_Shapeshifted = 0x00000001, + PlayerOutfitType__Enum_HorseWrangler = 0x00000002, + PlayerOutfitType__Enum_MushroomMixup = 0x00000003, }; #endif @@ -4605,32 +4607,28 @@ namespace app }; #pragma endregion -#pragma region PlainDoor__Array - struct PlainDoor__Array - { - struct PlainDoor__Array__Class* klass; - void* monitor; +#pragma region OpenableDoor__Array + struct OpenableDoor__Array { + struct OpenableDoor__Array__Class* klass; + MonitorData* monitor; Il2CppArrayBounds* bounds; il2cpp_array_size_t max_length; - struct PlainDoor* vector[32]; + struct OpenableDoor* vector[32]; }; - struct PlainDoor__Array__VTable - { + struct OpenableDoor__Array__VTable { }; - struct PlainDoor__Array__StaticFields - { + struct OpenableDoor__Array__StaticFields { }; - struct PlainDoor__Array__Class - { + struct OpenableDoor__Array__Class { Il2CppClass_0 _0; Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets; - struct PlainDoor__Array__StaticFields* static_fields; + struct OpenableDoor__Array__StaticFields* static_fields; const Il2CppRGCTXData* rgctx_data; Il2CppClass_1 _1; - struct PlainDoor__Array__VTable vtable; + struct OpenableDoor__Array__VTable vtable; }; #pragma endregion @@ -4662,6 +4660,7 @@ namespace app bool voteComplete; bool resultsShowing; void* PlayerIcon; + int32_t _MaskLayer_k__BackingField; }; struct PlayerVoteArea { @@ -4773,6 +4772,17 @@ namespace app MainHall = 0x2d, Medical = 0x2e, Decontamination3 = 0x2f, + Zipline = 0x30, + MiningPit = 0x31, + FishingDock = 0x32, + RecRoom = 0x33, + Lookout = 0x34, + Beach = 0x35, + Highlands = 0x36, + Jungle = 0x37, + SleepingQuarters = 0x38, + MushroomMixupSabotage = 0x39, + HeliSabotage = 0x3a, }; #else @@ -4825,6 +4835,17 @@ namespace app SystemTypes__Enum_MainHall = 0x2d, SystemTypes__Enum_Medical = 0x2e, SystemTypes__Enum_Decontamination3 = 0x2f, + SystemTypes__Enum_Zipline = 0x30, + SystemTypes__Enum_MiningPit = 0x31, + SystemTypes__Enum_FishingDock = 0x32, + SystemTypes__Enum_RecRoom = 0x33, + SystemTypes__Enum_Lookout = 0x34, + SystemTypes__Enum_Beach = 0x35, + SystemTypes__Enum_Highlands = 0x36, + SystemTypes__Enum_Jungle = 0x37, + SystemTypes__Enum_SleepingQuarters = 0x38, + SystemTypes__Enum_MushroomMixupSabotage = 0x39, + SystemTypes__Enum_HeliSabotage = 0x3a, }; #endif @@ -4908,6 +4929,7 @@ namespace app Ship = 0x00000000, Hq = 0x00000001, Pb = 0x00000002, + Fungle = 0x00000003, }; #else @@ -4916,6 +4938,7 @@ namespace app ShipStatus_MapType__Enum_Ship = 0x00000000, ShipStatus_MapType__Enum_Hq = 0x00000001, ShipStatus_MapType__Enum_Pb = 0x00000002, + ShipStatus_MapType__Enum_Fungle = 0x00000003, }; #endif @@ -4931,6 +4954,7 @@ namespace app void* EmergencyOverlay; void* ReportOverlay; void* MeetingBackground; + void* BrokenEmergencyButton; void* EmergencyButton; struct Vector2 InitialSpawnCenter; struct Vector2 MeetingSpawnCenter; @@ -4938,12 +4962,13 @@ namespace app float SpawnRadius; void* CommonTasks; void* LongTasks; - void* NormalTasks; + void* ShortTasks; struct PlayerTask__Array* SpecialTasks; void* DummyLocations; void* AllCameras; - struct PlainDoor__Array* AllDoors; + struct OpenableDoor__Array* AllDoors; void* AllConsoles; + void* Ladders; struct Dictionary_2_SystemTypes_ISystemType_* Systems; void* SystemNames; void* ExtraTaskNames; @@ -4956,6 +4981,7 @@ namespace app void* WeaponsImage; void* VentMoveSounds; void* VentEnterSound; + void* VentExitSound; void* HatchActive; void* Hatch; void* HatchParticles; @@ -4984,8 +5010,7 @@ namespace app struct ShipStatus__Fields fields; }; - struct ShipStatus__VTable - { + struct ShipStatus__VTable { VirtualInvokeData Equals; VirtualInvokeData Finalize; VirtualInvokeData GetHashCode; @@ -4998,21 +5023,20 @@ namespace app VirtualInvokeData Serialize; VirtualInvokeData Deserialize; VirtualInvokeData OnEnable; - VirtualInvokeData RepairGameOverSystems; + VirtualInvokeData RepairCriticalSabotages; VirtualInvokeData Start; VirtualInvokeData SpawnPlayer; VirtualInvokeData OnMeetingCalled; + VirtualInvokeData StartSFX; VirtualInvokeData PrespawnStep; VirtualInvokeData CalculateLightRadius; }; - struct ShipStatus__StaticFields - { + struct ShipStatus__StaticFields { struct ShipStatus* Instance; }; - struct ShipStatus__Class - { + struct ShipStatus__Class { Il2CppClass_0 _0; Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets; struct ShipStatus__StaticFields* static_fields; @@ -5024,2669 +5048,12 @@ namespace app #pragma region StringNames__Enum -#if defined(_CPLUSPLUS_) - enum class StringNames__Enum : int32_t { - None = 0x00000000, - BackButton = 0x00000001, - AvailableGamesLabel = 0x00000002, - CreateGameButton = 0x00000003, - FindGameButton = 0x00000004, - EnterCode = 0x00000005, - GhostIgnoreTasks = 0x00000006, - GhostDoTasks = 0x00000007, - GhostImpostor = 0x00000008, - ImpostorTask = 0x00000009, - FakeTasks = 0x0000000a, - TaskComplete = 0x0000000b, - ExileTextSP = 0x0000000c, - ExileTextSN = 0x0000000d, - ExileTextPP = 0x0000000e, - ExileTextPN = 0x0000000f, - NoExileSkip = 0x00000010, - NoExileTie = 0x00000011, - ImpostorsRemainS = 0x00000012, - ImpostorsRemainP = 0x00000013, - Hallway = 0x00000014, - Storage = 0x00000015, - Cafeteria = 0x00000016, - Reactor = 0x00000017, - UpperEngine = 0x00000018, - Nav = 0x00000019, - Admin = 0x0000001a, - Electrical = 0x0000001b, - LifeSupp = 0x0000001c, - Shields = 0x0000001d, - MedBay = 0x0000001e, - Security = 0x0000001f, - Weapons = 0x00000020, - LowerEngine = 0x00000021, - Comms = 0x00000022, - Decontamination = 0x00000023, - Launchpad = 0x00000024, - LockerRoom = 0x00000025, - Laboratory = 0x00000026, - Balcony = 0x00000027, - Office = 0x00000028, - Greenhouse = 0x00000029, - DivertPowerTo = 0x0000002a, - AcceptDivertedPower = 0x0000002b, - SubmitScan = 0x0000002c, - PrimeShields = 0x0000002d, - FuelEngines = 0x0000002e, - ChartCourse = 0x0000002f, - StartReactor = 0x00000030, - SwipeCard = 0x00000031, - ClearAsteroids = 0x00000032, - UploadData = 0x00000033, - DownloadData = 0x00000034, - InspectSample = 0x00000035, - EmptyChute = 0x00000036, - EmptyGarbage = 0x00000037, - AlignEngineOutput = 0x00000038, - FixWiring = 0x00000039, - CalibrateDistributor = 0x0000003a, - UnlockManifolds = 0x0000003b, - ResetReactor = 0x0000003c, - FixLights = 0x0000003d, - FixComms = 0x0000003e, - RestoreOxy = 0x0000003f, - CleanO2Filter = 0x00000040, - StabilizeSteering = 0x00000041, - AssembleArtifact = 0x00000042, - SortSamples = 0x00000043, - MeasureWeather = 0x00000044, - EnterIdCode = 0x00000045, - HowToPlayText1 = 0x00000046, - HowToPlayText2 = 0x00000047, - HowToPlayText5 = 0x00000048, - HowToPlayText6 = 0x00000049, - HowToPlayText7 = 0x0000004a, - HowToPlayText81 = 0x0000004b, - HowToPlayText82 = 0x0000004c, - NumImpostorsS = 0x0000004d, - NumImpostorsP = 0x0000004e, - Crewmate = 0x0000004f, - Impostor = 0x00000050, - Victory = 0x00000051, - Defeat = 0x00000052, - CrewmatesDisconnected = 0x00000053, - ImpostorDisconnected = 0x00000054, - HowToPlayText41 = 0x00000055, - HowToPlayText42 = 0x00000056, - HowToPlayText43 = 0x00000057, - HowToPlayText44 = 0x00000058, - HowToPlayTextMap = 0x00000059, - HowToPlayTextCrew1 = 0x0000005a, - HowToPlayTextCrew2 = 0x0000005b, - HowToPlayTextCrew3 = 0x0000005c, - HowToPlayTextCrew4 = 0x0000005d, - HowToPlayTextCrew5 = 0x0000005e, - HowToPlayTextCrew6 = 0x0000005f, - HowToPlayTextImp1 = 0x00000060, - HowToPlayTextImp2 = 0x00000061, - HowToPlayTextImp3 = 0x00000062, - HowToPlayTextImp4 = 0x00000063, - HowToPlayTextImp5 = 0x00000064, - HowToPlayTextImp6 = 0x00000065, - HowToPlayTextImp7 = 0x00000066, - SettingsGeneral = 0x00000067, - SettingsControls = 0x00000068, - SettingsSound = 0x00000069, - SettingsGraphics = 0x0000006a, - SettingsData = 0x0000006b, - SettingsCensorChat = 0x0000006c, - SettingsMusic = 0x0000006d, - SettingsSFX = 0x0000006e, - SettingsOn = 0x0000006f, - SettingsOff = 0x00000070, - SettingsSendTelemetry = 0x00000071, - SettingsControlMode = 0x00000072, - SettingsTouchMode = 0x00000073, - SettingsJoystickMode = 0x00000074, - SettingsKeyboardMode = 0x00000075, - SettingsFullscreen = 0x00000076, - SettingsResolution = 0x00000077, - SettingsApply = 0x00000078, - SettingsPersonalizeAds = 0x00000079, - SettingsLanguage = 0x0000007a, - SettingsJoystickSize = 0x0000007b, - SettingsMouseMode = 0x0000007c, - PlayerColor = 0x0000007d, - PlayerHat = 0x0000007e, - PlayerSkin = 0x0000007f, - PlayerPet = 0x00000080, - GameSettings = 0x00000081, - GameRecommendedSettings = 0x00000082, - GameCustomSettings = 0x00000083, - GameMapName = 0x00000084, - GameNumImpostors = 0x00000085, - GameNumMeetings = 0x00000086, - GameDiscussTime = 0x00000087, - GameVotingTime = 0x00000088, - GamePlayerSpeed = 0x00000089, - GameCrewLight = 0x0000008a, - GameImpostorLight = 0x0000008b, - GameKillCooldown = 0x0000008c, - GameKillDistance = 0x0000008d, - GameCommonTasks = 0x0000008e, - GameLongTasks = 0x0000008f, - GameShortTasks = 0x00000090, - MatchMapName = 0x00000091, - MatchLanguage = 0x00000092, - MatchImpostors = 0x00000093, - MatchMaxPlayers = 0x00000094, - Cancel = 0x00000095, - Confirm = 0x00000096, - Limit = 0x00000097, - RoomCode = 0x00000098, - LeaveGame = 0x00000099, - ReturnToGame = 0x0000009a, - LocalHelp = 0x0000009b, - OnlineHelp = 0x0000009c, - SettingsVSync = 0x0000009d, - EmergencyCount = 0x0000009e, - EmergencyNotReady = 0x0000009f, - EmergencyDuringCrisis = 0x000000a0, - EmergencyRequested = 0x000000a1, - GameEmergencyCooldown = 0x000000a2, - BuyBeverage = 0x000000a3, - WeatherEta = 0x000000a4, - WeatherComplete = 0x000000a5, - ProcessData = 0x000000a6, - RunDiagnostics = 0x000000a7, - WaterPlants = 0x000000a8, - PickAnomaly = 0x000000a9, - WaterPlantsGetCan = 0x000000aa, - AuthOfficeOkay = 0x000000ab, - AuthCommsOkay = 0x000000ac, - AuthOfficeActive = 0x000000ad, - AuthCommsActive = 0x000000ae, - AuthOfficeNotActive = 0x000000af, - AuthCommsNotActive = 0x000000b0, - SecLogEntry = 0x000000b1, - EnterName = 0x000000b2, - SwipeCardPleaseSwipe = 0x000000b3, - SwipeCardBadRead = 0x000000b4, - SwipeCardTooFast = 0x000000b5, - SwipeCardTooSlow = 0x000000b6, - SwipeCardAccepted = 0x000000b7, - ReactorHoldToStop = 0x000000b8, - ReactorWaiting = 0x000000b9, - ReactorNominal = 0x000000ba, - MeetingWhoIsTitle = 0x000000bb, - MeetingVotingBegins = 0x000000bc, - MeetingVotingEnds = 0x000000bd, - MeetingVotingResults = 0x000000be, - MeetingProceeds = 0x000000bf, - MeetingHasVoted = 0x000000c0, - DataPolicyTitle = 0x000000c1, - DataPolicyText = 0x000000c2, - DataPolicyWhat = 0x000000c3, - AdPolicyTitle = 0x000000c4, - AdPolicyText = 0x000000c5, - Accept = 0x000000c6, - RemoveAds = 0x000000c7, - SwipeCardPleaseInsert = 0x000000c8, - LogNorth = 0x000000c9, - LogSouthEast = 0x000000ca, - LogSouthWest = 0x000000cb, - SettingShort = 0x000000cc, - SettingMedium = 0x000000cd, - SettingLong = 0x000000ce, - SamplesPress = 0x000000cf, - SamplesAdding = 0x000000d0, - SamplesSelect = 0x000000d1, - SamplesThanks = 0x000000d2, - SamplesComplete = 0x000000d3, - AstDestroyed = 0x000000d4, - TaskTestTitle = 0x000000d5, - BeginDiagnostics = 0x000000d6, - UserLeftGame = 0x000000d7, - GameStarting = 0x000000d8, - Tasks = 0x000000d9, - StatsTitle = 0x000000da, - StatsBodiesReported = 0x000000db, - StatsEmergenciesCalled = 0x000000dc, - StatsTasksCompleted = 0x000000dd, - StatsAllTasksCompleted = 0x000000de, - StatsSabotagesFixed = 0x000000df, - StatsImpostorKills = 0x000000e0, - StatsTimesMurdered = 0x000000e1, - StatsTimesEjected = 0x000000e2, - StatsCrewmateStreak = 0x000000e3, - StatsGamesImpostor = 0x000000e4, - StatsGamesCrewmate = 0x000000e5, - StatsGamesStarted = 0x000000e6, - StatsGamesFinished = 0x000000e7, - StatsImpostorVoteWins = 0x000000e8, - StatsImpostorKillsWins = 0x000000e9, - StatsImpostorSabotageWins = 0x000000ea, - StatsCrewmateVoteWins = 0x000000eb, - StatsCrewmateTaskWins = 0x000000ec, - MedscanRequested = 0x000000ed, - MedscanWaitingFor = 0x000000ee, - MedscanCompleted = 0x000000ef, - MedscanCompleteIn = 0x000000f0, - MonitorOxygen = 0x000000f1, - StoreArtifacts = 0x000000f2, - FillCanisters = 0x000000f3, - FixWeatherNode = 0x000000f4, - InsertKeys = 0x000000f5, - ResetSeismic = 0x000000f6, - SeismicHoldToStop = 0x000000f7, - SeismicNominal = 0x000000f8, - ScanBoardingPass = 0x000000f9, - OpenWaterways = 0x000000fa, - ReplaceWaterJug = 0x000000fb, - RepairDrill = 0x000000fc, - AlignTelescope = 0x000000fd, - RecordTemperature = 0x000000fe, - RebootWifi = 0x000000ff, - WifiRebootRequired = 0x00000100, - WifiPleasePowerOn = 0x00000101, - WifiPleaseWait = 0x00000102, - WifiPleaseReturnIn = 0x00000103, - WifiRebootComplete = 0x00000104, - Outside = 0x00000105, - GameSecondsAbbrev = 0x00000106, - Engines = 0x00000107, - Dropship = 0x00000108, - Decontamination2 = 0x00000109, - Specimens = 0x0000010a, - BoilerRoom = 0x0000010b, - GameOverImpostorDead = 0x0000010c, - GameOverImpostorKills = 0x0000010d, - GameOverTaskWin = 0x0000010e, - GameOverSabotage = 0x0000010f, - GameConfirmImpostor = 0x00000110, - GameVisualTasks = 0x00000111, - ExileTextNonConfirm = 0x00000112, - GameAnonymousVotes = 0x00000113, - GameTaskBarMode = 0x00000114, - SettingNormalTaskMode = 0x00000115, - SettingMeetingTaskMode = 0x00000116, - SettingInvisibleTaskMode = 0x00000117, - PlainYes = 0x00000118, - PlainNo = 0x00000119, - PrivacyPolicyTitle = 0x0000011a, - PrivacyPolicyText = 0x0000011b, - ManageDataButton = 0x0000011c, - UnderstandButton = 0x0000011d, - HowToPlayText2Switch = 0x0000011e, - ChatRateLimit = 0x0000011f, - TotalTasksCompleted = 0x00000120, - ServerNA = 0x00000121, - ServerEU = 0x00000122, - ServerAS = 0x00000123, - ServerSA = 0x00000124, - LangEnglish = 0x00000125, - LangFrench = 0x00000126, - LangItalian = 0x00000127, - LangGerman = 0x00000128, - LangSpanish = 0x00000129, - LangSpanishLATAM = 0x0000012a, - LangBrazPort = 0x0000012b, - LangPort = 0x0000012c, - LangRussian = 0x0000012d, - LangJapanese = 0x0000012e, - LangKorean = 0x0000012f, - LangDutch = 0x00000130, - LangFilipino = 0x00000131, - PlayerName = 0x00000132, - MyTablet = 0x00000133, - Download = 0x00000134, - DownloadComplete = 0x00000135, - DownloadTestEstTimeS = 0x00000136, - DownloadTestEstTimeMS = 0x00000137, - DownloadTestEstTimeHMS = 0x00000138, - DownloadTestEstTimeDHMS = 0x00000139, - Upload = 0x0000013a, - Headquarters = 0x0000013b, - GrabCoffee = 0x0000013c, - TakeBreak = 0x0000013d, - DontNeedWait = 0x0000013e, - DoSomethingElse = 0x0000013f, - NodeTB = 0x00000140, - NodeIRO = 0x00000141, - NodeGI = 0x00000142, - NodePD = 0x00000143, - NodeCA = 0x00000144, - NodeMLG = 0x00000145, - Vending = 0x00000146, - OtherLanguage = 0x00000147, - ImposterAmtAny = 0x00000148, - VitalsORGN = 0x00000149, - VitalsBLUE = 0x0000014a, - VitalsRED = 0x0000014b, - VitalsBRWN = 0x0000014c, - VitalsGRN = 0x0000014d, - VitalsPINK = 0x0000014e, - VitalsWHTE = 0x0000014f, - VitalsYLOW = 0x00000150, - VitalsBLAK = 0x00000151, - VitalsPURP = 0x00000152, - VitalsCYAN = 0x00000153, - VitalsLIME = 0x00000154, - VitalsOK = 0x00000155, - VitalsDEAD = 0x00000156, - VitalsDC = 0x00000157, - ColorOrange = 0x00000158, - ColorBlue = 0x00000159, - ColorRed = 0x0000015a, - ColorBrown = 0x0000015b, - ColorGreen = 0x0000015c, - ColorPink = 0x0000015d, - ColorWhite = 0x0000015e, - ColorYellow = 0x0000015f, - ColorBlack = 0x00000160, - ColorPurple = 0x00000161, - ColorCyan = 0x00000162, - ColorLime = 0x00000163, - MedID = 0x00000164, - MedC = 0x00000165, - MedHT = 0x00000166, - MedBT = 0x00000167, - MedWT = 0x00000168, - MedETA = 0x00000169, - MedHello = 0x0000016a, - PetFailFetchData = 0x0000016b, - BadResult = 0x0000016c, - More = 0x0000016d, - Processing = 0x0000016e, - ExitGame = 0x0000016f, - WaitingForHost = 0x00000170, - LeftGameError = 0x00000171, - PlayerWasBannedBy = 0x00000172, - PlayerWasKickedBy = 0x00000173, - CamEast = 0x00000174, - CamCentral = 0x00000175, - CamNortheast = 0x00000176, - CamSouth = 0x00000177, - CamSouthwest = 0x00000178, - CamNorthwest = 0x00000179, - LoadingFailed = 0x0000017a, - LobbySizeWarning = 0x0000017b, - Okay = 0x0000017c, - OkayDontShow = 0x0000017d, - Nevermind = 0x0000017e, - Dummy = 0x0000017f, - Bad = 0x00000180, - Status = 0x00000181, - Fine = 0x00000182, - OK = 0x00000183, - PetTryOn = 0x00000184, - SecondsAbbv = 0x00000185, - SecurityLogsSystem = 0x00000186, - SecurityCamsSystem = 0x00000187, - AdminMapSystem = 0x00000188, - VitalsSystem = 0x00000189, - BanButton = 0x0000018a, - KickButton = 0x0000018b, - ReportButton = 0x0000018c, - ReportConfirmation = 0x0000018d, - ReportBadName = 0x0000018e, - ReportBadChat = 0x0000018f, - ReportHacking = 0x00000190, - ReportHarassment = 0x00000191, - ReportWhy = 0x00000192, - Visor = 0x00000193, - NamePlate = 0x00000194, - Visors = 0x00000195, - NamePlates = 0x00000196, - Cosmicube = 0x00000197, - Cosmicubes = 0x00000198, - Activate = 0x00000199, - Deactivate = 0x0000019a, - Owned = 0x0000019b, - Purchase = 0x0000019c, - CosmicubeProgression = 0x0000019d, - ViewCube = 0x0000019e, - ConfirmPurchaseHeader = 0x0000019f, - ConfirmPurchaseText = 0x000001a0, - DeactivateCube = 0x000001a1, - ActivateCube = 0x000001a2, - Bundles = 0x000001a3, - Stars = 0x000001a4, - PurchasingLabel = 0x000001a5, - MouseMovement = 0x000001a6, - KeyboardOptions = 0x000001a7, - RemapBindings = 0x000001a8, - KeyboardBindingsHeader = 0x000001a9, - ExitButton = 0x000001aa, - PolishRuby = 0x000001f4, - ResetBreakers = 0x000001f5, - Decontaminate = 0x000001f6, - MakeBurger = 0x000001f7, - UnlockSafe = 0x000001f8, - SortRecords = 0x000001f9, - PutAwayPistols = 0x000001fa, - FixShower = 0x000001fb, - CleanToilet = 0x000001fc, - DressMannequin = 0x000001fd, - PickUpTowels = 0x000001fe, - RewindTapes = 0x000001ff, - StartFans = 0x00000200, - DevelopPhotos = 0x00000201, - GetBiggolSword = 0x00000202, - PutAwayRifles = 0x00000203, - StopCharles = 0x00000204, - AuthLeftOkay = 0x00000205, - AuthRightOkay = 0x00000206, - AuthLeftActive = 0x00000207, - AuthRightActive = 0x00000208, - AuthLeftNotActive = 0x00000209, - AuthRightNotActive = 0x0000020a, - VaultRoom = 0x00000226, - Cockpit = 0x00000227, - Armory = 0x00000228, - Kitchen = 0x00000229, - ViewingDeck = 0x0000022a, - HallOfPortraits = 0x0000022b, - Medical = 0x0000022c, - CargoBay = 0x0000022d, - Ventilation = 0x0000022e, - Showers = 0x0000022f, - Engine = 0x00000230, - Brig = 0x00000231, - MeetingRoom = 0x00000232, - Records = 0x00000233, - Lounge = 0x00000234, - GapRoom = 0x00000235, - MainHall = 0x00000236, - RevealCode = 0x00000237, - DirtyHeader = 0x00000238, - ErrorServerOverload = 0x000002bc, - ErrorIntentionalLeaving = 0x000002bd, - ErrorFocusLost = 0x000002be, - ErrorBanned = 0x000002bf, - ErrorKicked = 0x000002c0, - ErrorBannedNoCode = 0x000002c1, - ErrorKickedNoCode = 0x000002c2, - ErrorHacking = 0x000002c3, - ErrorFullGame = 0x000002c4, - ErrorStartedGame = 0x000002c5, - ErrorNotFoundGame = 0x000002c6, - ErrorInactivity = 0x000002c7, - ErrorGenericOnlineDisconnect = 0x000002c8, - ErrorGenericLocalDisconnect = 0x000002c9, - ErrorInvalidName = 0x000002ca, - ErrorUnknown = 0x000002cb, - ErrorIncorrectVersion = 0x000002cc, - ErrorNotAuthenticated = 0x000002cd, - ErrorInternalServer = 0x000002ce, - ErrorPlatformLock = 0x000002cf, - ErrorLobbyInactivity = 0x000002d0, - ErrorMatchmakerInactivity = 0x000002d1, - ErrorInvalidGameOptions = 0x000002d2, - ErrorNoServersAvailable = 0x000002d3, - ErrorQuickmatchDisabled = 0x000002d4, - ErrorTooManyGames = 0x000002d5, - ErrorDuplicateConnection = 0x000002d6, - ErrorTooManyRequests = 0x000002d7, - ErrorSanction = 0x000002d8, - VentDirection = 0x000003e8, - VentMove = 0x000003e9, - MenuNavigate = 0x000003ea, - NoTranslation = 0x000003eb, - NsoError = 0x000003ec, - RolesSettings = 0x000005dc, - ScientistRole = 0x000005dd, - EngineerRole = 0x000005de, - GuardianAngelRole = 0x000005df, - ShapeshifterRole = 0x000005e0, - ScientistBlurb = 0x000005e1, - EngineerBlurb = 0x000005e2, - GuardianAngelBlurb = 0x000005e3, - ShapeshifterBlurb = 0x000005e4, - CrewmateBlurb = 0x000005e5, - ImpostorBlurb = 0x000005e6, - YourRoleIs = 0x000005e7, - ShapeshiftAbility = 0x000005e8, - VentAbility = 0x000005e9, - VitalsAbility = 0x000005ea, - ProtectAbility = 0x000005eb, - ShapeshiftAbilityUndo = 0x000005ec, - RoleChanceAndQuantity = 0x000005ed, - ProtectedRecently = 0x000005ee, - ShapeshifterDuration = 0x000005ef, - ShapeshifterCooldown = 0x000005f0, - ShapeshifterLeaveSkin = 0x000005f1, - ScientistCooldown = 0x000005f2, - GuardianAngelCooldown = 0x000005f3, - EngineerCooldown = 0x000005f4, - ScientistBlurbMed = 0x000005f5, - ScientistBlurbLong = 0x000005f6, - EngineerBlurbMed = 0x000005f7, - EngineerBlurbLong = 0x000005f8, - GuardianAngelBlurbMed = 0x000005f9, - GuardianAngelBlurbLong = 0x000005fa, - ShapeshifterBlurbMed = 0x000005fb, - ShapeshifterBlurbLong = 0x000005fc, - RoleHint = 0x000005fd, - EngineerInVentCooldown = 0x000005fe, - ScientistBatteryCharge = 0x000005ff, - GuardianAngelDuration = 0x00000600, - GuardianAngelImpostorSeeProtect = 0x00000601, - StatsRoleWins = 0x00000602, - StatsEngineerVents = 0x00000603, - StatsScientistChargesGained = 0x00000604, - StatsGuardianAngelCrewmatesProtected = 0x00000605, - StatsShapeshifterShiftedKills = 0x00000606, - CrewmateGhostRole = 0x00000607, - ImpostorGhostRole = 0x00000608, - HauntAbilityName = 0x00000609, - SeekButton = 0x0000060a, - SanctionDuration = 0x000006a4, - SanctionPermanent = 0x000006a5, - SanctionConduct = 0x000006a6, - SanctionImpersonationCeleb = 0x000006a7, - SanctionSpamming = 0x000006a8, - SanctionInappropriateNameUnsportsmanlike = 0x000006a9, - SanctionUnsportsmanlikeConduct = 0x000006aa, - SanctionImpersonationDevelopers = 0x000006ab, - SanctionInappropriateChatPersonalInfo = 0x000006ac, - SanctionInappropriateNameDerogatory = 0x000006ad, - SanctionInappropriateNameNsfw = 0x000006ae, - SanctionBullying = 0x000006af, - SanctionCheatingHacking = 0x000006b0, - SanctionInappropriateChatDating = 0x000006b1, - SanctionWeaponizingRules = 0x000006b2, - SanctionRepeatOffender3 = 0x000006b3, - SanctionSexualMisconduct = 0x000006b4, - SanctionDoxing = 0x000006b5, - SanctionIllegalActivity = 0x000006b6, - SanctionHarassment = 0x000006b7, - SanctionSelfHarmPromotion = 0x000006b8, - SanctionRepeatOffender10 = 0x000006b9, - SanctionUnknown = 0x000006ba, - ScreenShakeOption = 0x0000076c, - FeaturedItems = 0x0000076d, - FeaturedBundles = 0x0000076e, - FeaturedCubes = 0x0000076f, - BugReportPopUpAttachScreenshotDesc = 0x00000770, - UserIdTokenError = 0x00000771, - NewGameMode = 0x00000772, - NewModeInfo = 0x00000773, - HideSeekHowToPlayTitleOne = 0x00000774, - HideSeekHowToPlayCaptionOne = 0x00000775, - HideSeekHowToPlayCaptionTwo = 0x00000776, - HideSeekHowToPlayCaptionThree = 0x00000777, - HideSeekHowToPlayPageOne = 0x00000778, - HideSeekHowToPlayImpostorOne = 0x00000779, - HideSeekHowToPlaySubtextOne = 0x0000077a, - HideSeekHowToPlayCrewmateInfoOne = 0x0000077b, - HideSeekHowToPlayCrewmateInfoTwo = 0x0000077c, - HideSeekHowToPlayImpostorInfoOne = 0x0000077d, - HideSeekHowToPlayFlashlightDefault = 0x0000077e, - HideSeekHowToPlayFinalHide = 0x0000077f, - HideSeekHowToPlayFlashlightMobile = 0x00000780, - HideSeekHowToPlayFlashlightSwitch = 0x00000781, - HideSeekHowToPlayFlashlightConsoles = 0x00000782, - HideSeekHowToPlayFlashlightPlayStation = 0x00000783, - QCInputSelf = 0x00000785, - QCInputFavorite = 0x00000786, - QCCrewMyself = 0x0000079e, - QCTagSelf = 0x0000079f, - QCTagFavorites = 0x000007a0, - QCBuilderHeader = 0x000007a1, - QCRemarks = 0x000007a2, - QCCrewDead = 0x000007a3, - QCSelfVoted = 0x000007a4, - QCSelfReportedBody = 0x000007a5, - QCSelfCams = 0x000007a6, - QCCrewReportedBody = 0x000007a7, - QCCrewCams = 0x000007a8, - QCSelfWasProtected = 0x000007a9, - QCCrewWasProtected = 0x000007aa, - QCSelfWasntMe = 0x000007ab, - QCWhoWasAt = 0x000007ac, - QCSelfDoingTask = 0x000007ad, - QCWhoIsRole = 0x000007ae, - QCSelfFixedSystem = 0x000007af, - QCCrewFixedSystem = 0x000007b0, - QCSelfAccAtLocation = 0x000007b1, - QCSelfDidTaskAtLocation = 0x000007b2, - QCCrewDidTaskAtLocation = 0x000007b3, - QCSelfSawCrewVentAtLocation = 0x000007b4, - QCSelfDidntVent = 0x000007b5, - QCFollowMe = 0x000007b6, - QCItsNotMe = 0x000007b7, - QCSelfDoneWithTasks = 0x000007b8, - QCGhostsDoYourTasks = 0x000007b9, - QCSelfNotTheImpostor = 0x000007ba, - QCHello = 0x000007bb, - QCThanks = 0x000007bc, - QCSorry = 0x000007bd, - QCGG = 0x000007be, - QCBye = 0x000007bf, - QCWhereWasTheBody = 0x000007c0, - QCSelfReady = 0x000007c1, - QCSelfWasRole = 0x000007c2, - QCWhoWasRole = 0x000007c3, - QCCoolOutfitCrew = 0x000007c4, - QCLocationLaptop = 0x000007d0, - QCLocationSkeld = 0x000007d1, - QCLocationMira = 0x000007d2, - QCLocationPolus = 0x000007d3, - QCSystemsStart = 0x000007d4, - QCSystemsKick = 0x000007d5, - QCCrewI = 0x000007d6, - QCCrewMe = 0x000007d7, - QCCrewNoOne = 0x000007d8, - QCAccAKilledB = 0x000007d9, - QCAccAKilledBNeg = 0x000007da, - QCAccAIsSuspicious = 0x000007db, - QCAccAIsSuspiciousNeg = 0x000007dc, - QCAccASawBVent = 0x000007dd, - QCAccASawBVentNeg = 0x000007de, - QCAccAWasChasingB = 0x000007df, - QCAccAWasChasingBNeg = 0x000007e0, - QCAccAIsLying = 0x000007e1, - QCAccAIsLyingNeg = 0x000007e2, - QCAccVoteA = 0x000007e3, - QCAccVoteANeg = 0x000007e4, - QCAccADidntReport = 0x000007e5, - QCResYes = 0x000007e6, - QCResNo = 0x000007e7, - QCResDontKnow = 0x000007e8, - QCResDontKnowNeg = 0x000007e9, - QCResAWas = 0x000007ea, - QCResAWasNeg = 0x000007eb, - QCResADid = 0x000007ec, - QCResADidNeg = 0x000007ed, - QCResVote = 0x000007ee, - QCResVoteNeg = 0x000007ef, - QCResAWasAtB = 0x000007f0, - QCResAWasAtBNeg = 0x000007f1, - QCResRip = 0x000007f2, - QCResRipNeg = 0x000007f3, - QCResLies = 0x000007f4, - QCResLiesNeg = 0x000007f5, - QCQstWhere = 0x000007f6, - QCQstWho = 0x000007f7, - QCQstWhoWasWith = 0x000007f8, - QCQstWhatWasADoing = 0x000007f9, - QCQstWhoFixedA = 0x000007fa, - QCQstWhereWasA = 0x000007fb, - QCQstBodyOrMeeting = 0x000007fc, - QCStaASawB = 0x000007fd, - QCStaAWasWithB = 0x000007fe, - QCStaADidB = 0x000007ff, - QCStaASelfReported = 0x00000800, - QCStaDoubleKill = 0x00000801, - QCStaWasSelfReport = 0x00000802, - QCStaPleaseDoTasks = 0x00000803, - QCStaBodyWasInA = 0x00000804, - QCStaACalledMeeting = 0x00000805, - QCLocation = 0x00000806, - QCSystems = 0x00000807, - QCCrew = 0x00000808, - QCAccusation = 0x00000809, - QCResponse = 0x0000080a, - QCQuestion = 0x0000080b, - QCStatements = 0x0000080c, - ANY = 0x0000080d, - ChatType = 0x0000080e, - QuickChatOnly = 0x0000080f, - FreeChatOnly = 0x00000810, - FreeOrQuickChat = 0x00000811, - DateOfBirth = 0x00000812, - DateOfBirthEnter = 0x00000813, - Month = 0x00000814, - Day = 0x00000815, - Year = 0x00000816, - January = 0x00000817, - February = 0x00000818, - March = 0x00000819, - April = 0x0000081a, - May = 0x0000081b, - June = 0x0000081c, - July = 0x0000081d, - August = 0x0000081e, - September = 0x0000081f, - October = 0x00000820, - November = 0x00000821, - December = 0x00000822, - Submit = 0x00000823, - QCMore = 0x00000824, - Success = 0x00000825, - Failed = 0x00000826, - ErrorCreate = 0x00000827, - SuccessCreate = 0x00000828, - Close = 0x00000829, - ErrorLogIn = 0x0000082a, - SuccessLogIn = 0x0000082b, - AccountInfo = 0x0000082c, - Account = 0x0000082d, - UserName = 0x0000082e, - Height = 0x0000082f, - Weight = 0x00000830, - SignIn = 0x00000831, - CreateAccount = 0x00000832, - RequestPermission = 0x00000833, - RandomizeName = 0x00000834, - AccountLinking = 0x00000835, - ChangeName = 0x00000836, - LogOut = 0x00000837, - GuardianWait = 0x00000838, - EmailEdit = 0x00000839, - EmailResend = 0x0000083a, - GuestContinue = 0x0000083b, - GuardianEmailSent = 0x0000083c, - GuardianCheckEmail = 0x0000083d, - EditName = 0x0000083e, - Name = 0x0000083f, - CreateAccountQuestion = 0x00000840, - DoYouWantCreate = 0x00000841, - PermissionRequired = 0x00000842, - NeedPermissionText = 0x00000843, - GuardianEmailTitle = 0x00000844, - Send = 0x00000845, - NewEmail = 0x00000846, - ConfirmEmail = 0x00000847, - EditEmail = 0x00000848, - Loading = 0x00000849, - Welcome = 0x0000084a, - DLLNotFoundAccountError = 0x0000084b, - ContinueOffline = 0x0000084c, - CreateTryAgain = 0x0000084d, - WantToLogIn = 0x0000084e, - GoOffline = 0x0000084f, - PlayAsGuest = 0x00000850, - LogInTitle = 0x00000851, - LogInInfoText = 0x00000852, - ShowAccountSupportID5 = 0x00000853, - ShowAccountSupportID4 = 0x00000854, - ShowAccountSupportID3 = 0x00000855, - ShowAccountSupportID2 = 0x00000856, - ShowAccountSupportID1 = 0x00000857, - YouAreNotOnline = 0x00000858, - SaveGameOutOfSpaceMessage = 0x00000859, - SaveGameOutOfSpaceConfirm = 0x0000085a, - SaveGameOutOfSpaceCancel = 0x0000085b, - EngagementScreen = 0x0000085c, - EngagementScreenSignIn = 0x0000085d, - FollowUs = 0x0000085e, - ColorMaroon = 0x0000085f, - ColorRose = 0x00000860, - ColorBanana = 0x00000861, - ColorGray = 0x00000862, - ColorTan = 0x00000863, - ColorSunset = 0x00000864, - QuickChatInstructionsStart = 0x00000865, - QuickChatInstructionsChild = 0x00000866, - QuickChatInstructionsGuest = 0x00000867, - QuickChatInstructionsFull = 0x00000868, - SwitchEShopBrowseAll = 0x00000869, - ColorCoral = 0x0000086a, - GuardianEmail = 0x0000086b, - LocalButton = 0x0000086c, - OnlineButton = 0x0000086d, - HowToPlayButton = 0x0000086e, - FreePlayButton = 0x0000086f, - PublicHeader = 0x00000870, - PrivateHeader = 0x00000871, - HostHeader = 0x00000872, - EmergencyMeeting = 0x00000873, - BodyReported = 0x00000874, - PlayAgain = 0x00000875, - QuitLabel = 0x00000876, - DownloadLabel = 0x00000877, - UploadLabel = 0x00000878, - TimeRemaining = 0x00000879, - AnnouncementLabel = 0x0000087a, - StartLabel = 0x0000087b, - UseLabel = 0x0000087c, - KillLabel = 0x0000087d, - SabotageLabel = 0x0000087e, - VentLabel = 0x0000087f, - OptionsLabel = 0x00000880, - ReportLabel = 0x00000881, - CO2Label = 0x00000882, - NutriLabel = 0x00000883, - RADLabel = 0x00000884, - WaterLabel = 0x00000885, - DiscussLabel = 0x00000886, - DeadLabel = 0x00000887, - SkippedVoting = 0x00000888, - ProceedLabel = 0x00000889, - HolidayHatLabel = 0x0000088a, - HatLabel = 0x0000088b, - PetLabel = 0x0000088c, - SkinLabel = 0x0000088d, - DoorlogLabel = 0x0000088e, - VitalsLabel = 0x0000088f, - InsufficientStorageError = 0x00000890, - NetworkError = 0x00000891, - OtherDownloadError = 0x00000892, - DownloadingLabel = 0x00000893, - DownloadSizeLabel = 0x00000894, - SkipVoteLabel = 0x00000895, - LogInInfoTextSwitch = 0x00000896, - WeatherDataDownload = 0x00000897, - BeginLabel = 0x00000898, - QuietLabel = 0x00000899, - LogLabel = 0x0000089a, - ReadingLabel = 0x0000089b, - UploadingLabel = 0x0000089c, - ConnectionLabel = 0x0000089d, - GoodLabel = 0x0000089e, - PoorLabel = 0x0000089f, - NoneLabel = 0x000008a0, - ProgressLabel = 0x000008a1, - PerfectLabel = 0x000008a2, - NoDeadBodiesFound = 0x000008a3, - AirshipBundle = 0x000008a4, - PolusBundle = 0x000008a5, - PolusSkinBundle = 0x000008a6, - MiraBundle = 0x000008a7, - MiraSkinBundle = 0x000008a8, - PetAlien2 = 0x000008a9, - PetAlien1 = 0x000008aa, - PetAnimal = 0x000008ab, - PetCrewmate = 0x000008ac, - PetStickmin = 0x000008ad, - PrisonerSkin = 0x000008ae, - Cyborg_RHM = 0x000008af, - CCC_Officer = 0x000008b0, - VentCleaning = 0x000008b1, - CleanUp = 0x000008b2, - ControllerDisconnectedMessage = 0x000008b3, - TermsOfUseTitle = 0x000008b4, - PPAndToUTitle = 0x000008b5, - ComePlayDiscord = 0x000008b6, - SupportEmail = 0x000008b7, - SupportIDLabel = 0x000008b8, - pk05_davehat = 0x000008b9, - pk05_Ellie = 0x000008ba, - pk05_Svenhat = 0x000008bb, - pk05_Burthat = 0x000008bc, - pk05_Ellryhat = 0x000008bd, - pk05_monocles = 0x000008be, - pk05_cheesetoppat = 0x000008bf, - pk05_Macbethhat = 0x000008c0, - pk05_HenryToppat = 0x000008c1, - pk05_EllieToppat = 0x000008c2, - pk05_GeoffreyToppat = 0x000008c3, - InviteFriends = 0x000008c4, - Continue = 0x000008c5, - GameComplete = 0x000008c6, - XpGained = 0x000008c7, - PodsEarned = 0x000008c8, - CosmicubeNodeUnlocked = 0x000008c9, - LevelShorthand = 0x000008ca, - PrestigeLevelShorthand = 0x000008cb, - MaxLevel = 0x000008cc, - EquipLabel = 0x000008cd, - XpGainedValue = 0x000008ce, - PSNErrorSessionFailed = 0x000008cf, - PSNErrorSessionJoinFailed = 0x000008d0, - PSNErrorSessionGetInfoFailed = 0x000008d1, - PSNErrorPSNConnectionLost = 0x000008d2, - PSNErrorUserSignedOut = 0x000008d3, - CrossPlayTitle = 0x000008d4, - CrossPlayAllPlatforms = 0x000008d5, - CrossPlaySamePlatform = 0x000008d6, - QuickChat = 0x000008d7, - TimeOutText = 0x000008d8, - RetryText = 0x000008d9, - PlayerLevel = 0x000008da, - PlayerXp = 0x000008db, - PlayerLevelExtremeShorthand = 0x000008dc, - Max = 0x000008dd, - Wardrobe = 0x000008de, - CopiedText = 0x000008df, - LinkAccount = 0x000008e0, - CreateNewAccount = 0x000008e1, - LinkExistingAccount = 0x000008e2, - LinkAccountExplanation = 0x000008e3, - LinkAccountCode = 0x000008e4, - ErrorLink = 0x000008e5, - UnlinkAccount = 0x000008e6, - ConfirmUnlinkAccount = 0x000008e7, - UnlinkAccountExplain = 0x000008e8, - UnlinkAccountExplainConfirm = 0x000008e9, - UnlinkError = 0x000008ea, - UnlinkSuccess = 0x000008eb, - ConfirmLinkExistingAccount = 0x000008ec, - LinkExistingAccountExplain = 0x000008ed, - LinkExistingAccountExplainConfirm = 0x000008ee, - ResetAccount = 0x000008ef, - CrossPlayEnabledWarning = 0x000008f0, - StoreComingSoon = 0x000008f1, - Locked = 0x000008f2, - FailPurchase = 0x000008f3, - FailPurchaseUnknown = 0x000008f4, - FailPurchaseAlreadyOwn = 0x000008f5, - FailPurchaseCurrency = 0x000008f6, - FailPurchaseCubeOwn = 0x000008f7, - ErrorPlatformParentalControlsBlock = 0x000008f8, - Crewmates = 0x000008f9, - Colors = 0x000008fa, - Active = 0x000008fb, - Equipped = 0x000008fc, - QCLocationAirship = 0x000008fd, - XboxShopBrowseAll = 0x000008fe, - PSShopBrowseAll = 0x000008ff, - SteamNotInitialized = 0x00000900, - LoggedInErrorStarPurchase = 0x00000901, - StarDisclaimer = 0x00000902, - HowToPlayText_Consoles = 0x00000903, - ErrorQuickChatMode = 0x00000904, - ErrorLobbyUsersBlocked = 0x00000905, - ItchNoStars = 0x00000906, - CheckingPurchasesLabel = 0x00000907, - RedeemPurchasedItemsTitle = 0x00000908, - RedeemPurcahsedItemsExplain = 0x00000909, - RedeemProceed = 0x0000090a, - RedeemNotYet = 0x0000090b, - AccountIDDisplay = 0x0000090c, - RedeemNever = 0x0000090d, - AvailableFor = 0x0000090e, - GuestProgressionWarning = 0x0000090f, - ErrorSelfPlatformLock = 0x00000910, - ErrorCrossPlat = 0x00000911, - SettingsStreamerMode = 0x00000912, - RoomCodeInfo = 0x00000913, - AbbreviatedDay = 0x00000914, - AbbreviatedHour = 0x00000915, - AbbreviatedMinute = 0x00000916, - AbbreviatedSecond = 0x00000917, - StreamingTwitch = 0x00000918, - MaxVentUses = 0x00000a8c, - MaxTimeInVent = 0x00000a8d, - MinCrewmatesForVitals = 0x00000a8e, - EscapeTime = 0x00000a8f, - AllTasksComplete = 0x00000a90, - EscapePrompt = 0x00000a91, - CrewmateFlashlightSize = 0x00000a92, - ImpostorFlashlightSize = 0x00000a93, - CrewmateLeadTime = 0x00000a94, - CrewmadeHideBlurb = 0x00000a95, - ImpostorKillBlurb = 0x00000a96, - HideCountdown = 0x00000a97, - ScaryMusicDistance = 0x00000a98, - ShortTaskTimeValue = 0x00000a99, - LongTaskTimeValue = 0x00000a9a, - CommonTaskTimeValue = 0x00000a9b, - UseFlashlight = 0x00000a9c, - FinalEscapeTime = 0x00000a9d, - VeryScaryMusicDistance = 0x00000a9e, - SeekerFinalSpeed = 0x00000a9f, - SeekerFinalVents = 0x00000aa0, - SeekerFinalMap = 0x00000aa1, - CrewmateVentCooldown = 0x00000aa2, - SeekerPings = 0x00000aa3, - MaxPingTime = 0x00000aa4, - ShowPingTime = 0x00000aa5, - MinPingTime = 0x00000aa6, - ShowCrewmateNames = 0x00000aa7, - ShowImpostorNames = 0x00000aa8, - HideActionButton = 0x00000aa9, - RuleOneCrewmates = 0x00000aaa, - RuleTwoCrewmates = 0x00000aab, - RuleThreeCrewmates = 0x00000aac, - RuleOneImpostor = 0x00000aad, - RuleTwoImpostor = 0x00000aae, - RuleThreeImpostor = 0x00000aaf, - RuleOneCrewmatesTitle = 0x00000ab0, - RuleTwoCrewmatesTitle = 0x00000ab1, - RuleThreeCrewmatesTitle = 0x00000ab2, - RuleOneImpostorTitle = 0x00000ab3, - RuleTwoImpostorTitle = 0x00000ab4, - RoundRobin = 0x00000ab5, - OptionUnavailablePublicLobby = 0x00000ab6, - StatsHidenSeekGamesCrewmateSurvived = 0x00000ab7, - StatsHidenSeekTimesVented = 0x00000ab8, - StatsTimesPettedPet = 0x00000ab9, - StatsImpostorKills_HideAndSeek = 0x00000aba, - StatsFastestCrewmateWin_HideAndSeek = 0x00000abb, - StatsFastestImpostorWin_HideAndSeek = 0x00000abc, - StatsHideAndSeekImpostorVictory = 0x00000abd, - StatsHideAndSeekCrewmateVictory = 0x00000abe, - AmongUsFriends = 0x00000af0, - FriendsGuestWarning = 0x00000af1, - PlatformFriends = 0x00000af2, - BlockedPlayers = 0x00000af3, - RecentPlayers = 0x00000af4, - LobbyLabel = 0x00000af5, - FriendCodeExplanation = 0x00000af6, - FriendCodeSuccess = 0x00000af7, - FriendRequestReceived = 0x00000af8, - FriendRequestSent = 0x00000af9, - GameLobbyInviteSent = 0x00000afa, - GameLobbyInviteReceived = 0x00000afb, - BlockPlayerConfirm = 0x00000afc, - RemoveFriendConfirm = 0x00000afd, - InviteToLobbyConfirm = 0x00000afe, - FriendCodeLabel = 0x00000aff, - FriendCodeCreationTitle = 0x00000b00, - FriendRequestSentFailed = 0x00000b01, - ErrorBadUsername = 0x00000b02, - ErrorUserNotFound = 0x00000b03, - ErrorThisIsYou = 0x00000b04, - ErrorFriendRequestExists = 0x00000b05, - ErrorAlreadyFriends = 0x00000b06, - GameLobbyInviteSentFailed = 0x00000b07, - BlockedPlayerFailed = 0x00000b08, - BlockedPlayer = 0x00000b09, - AlreadyBlocked = 0x00000b0a, - FriendList = 0x00000b0b, - NoNewRequests = 0x00000b0c, - AddFriendPrompt = 0x00000b0d, - NewRequests = 0x00000b0e, - Requests = 0x00000b0f, - AddFriend = 0x00000b10, - StreamWarning = 0x00000b11, - FriendsListPermissionsWarning = 0x00000b12, - AddFriendConfirm = 0x00000b13, - UnfriendConfirm = 0x00000b14, - UnblockConfirm = 0x00000b15, - SettingsEnableFriendInvites = 0x00000b16, - ErrorCrossPlatformCommunication = 0x00000b17, - ErrorPlatformFriends = 0x00000b18, - ErrorPlayerBlockedYou = 0x00000b19, - ErrorRecipientMaxFriendRequests = 0x00000b1a, - ErrorSenderMaxFriendRequests = 0x00000b1b, - ErrorMaxFriends = 0x00000b1c, - ErrorRecipientMaxFriends = 0x00000b1d, - ParentPortalButton = 0x00000b1e, - FriendsListEmailSent = 0x00000b1f, - AndroidAssetBundleWarning = 0x00000b20, - FreeChatLinkWarning = 0x00000b21, - FriendListUnavailable = 0x00000b22, - SignInIssueTitle = 0x00000b23, - SignInIssueText = 0x00000b24, - Ghost = 0x00000b25, - CurrentlyHaunting = 0x00000b26, - RestorePurchases = 0x00000b27, - QCAccIsRole = 0x00000bb8, - QCAccIsRoleNeg = 0x00000bb9, - QCAccShapeshited = 0x00000bba, - QCStaShapeshifterSkin = 0x00000bbb, - QCResIsBeingFramed = 0x00000bbc, - QCResIsRoleMaybe = 0x00000bbd, - QCResCloseTo = 0x00000bbe, - QCResProtected = 0x00000bbf, - QCRoles = 0x00000bc0, - ErrorFailedToCreateGame = 0x00000bc1, - ErrorFailedToJoinCreatedGame = 0x00000bc2, - ErrorDisconnectBeforeJoining = 0x00000bc3, - ErrorDisconnectPacket = 0x00000bc4, - PSEULA_SIEA = 0x00000bc5, - PSEULA_SIEE = 0x00000bc6, - ShowAccountID = 0x00000bc7, - HideAccountID = 0x00000bc8, - HiddenAccountID = 0x00000bc9, - ErrorLobbyFailedGettingBlockedUsers = 0x00000bca, - SteamOverlayDisabled = 0x00000bcb, - QCOnlyInfo = 0x00000bcc, - FreeChatInfo = 0x00000bcd, - FreeChatWarning = 0x00000bce, - TryAgain = 0x00000bcf, - TempDisabled = 0x00000bd0, - TempDisabledLinkExplain = 0x00000bd1, - RedeemPopup = 0x00000bd2, - RedeemButton = 0x00000bd3, - Decontamination3 = 0x00000bd4, - MergeGuestAccountText = 0x00000bd5, - MergeGuestAccountTitle = 0x00000bd6, - ErrorCommunications = 0x00000bd7, - ManageAccountTitle = 0x00000bd8, - ManageAccountText = 0x00000bd9, - Email = 0x00000bda, - BugReportPopUpSubmittedText = 0x00000bdb, - BugReportPopUpCategoryLabel = 0x00000bdc, - BugReportPopUpDescriptionLabel = 0x00000bdd, - BugReportPopUpTitle = 0x00000bde, - BugReportCategoryServerIssues = 0x00000bdf, - BugReportCategoryGameplayIssue = 0x00000be0, - BugReportCategoryAccountManagement = 0x00000be1, - BugReportCategoryBilling = 0x00000be2, - BugReportCategoryGeneral = 0x00000be3, - BugReportIssueButton = 0x00000be4, - BugReportPopUpSubmissionFailedText = 0x00000be5, - BugReportPopUpAttachScreenshotLabel = 0x00000be6, - QCQstWhy = 0x00000bea, - QCTagAccuse = 0x00000beb, - QCTagDefend = 0x00000bec, - QCTagQuestion = 0x00000bed, - QCTagLobby = 0x00000bee, - QCTagImpostor = 0x00000bef, - QCTagMeeting = 0x00000bf0, - QCTagHiding = 0x00000bf1, - QCTagFlashlight = 0x00000bf2, - QCTagRoles = 0x00000bf3, - QCInputRole = 0x00000bf4, - QCTagTasks = 0x00000bf5, - QCInputTask = 0x00000bf6, - QCTagSabotages = 0x00000bf7, - QCInputSabotages = 0x00000bf8, - QCTagRemarks = 0x00000bf9, - QCInputRemark = 0x00000bfa, - QCInputAccusation = 0x00000bfb, - QCInputDefense = 0x00000bfc, - QCTagQuestionSingular = 0x00000bfd, - QCResAgree = 0x00000bfe, - QCResDisagree = 0x00000bff, - QCResNice = 0x00000c00, - QCResUhOh = 0x00000c01, - QCResOops = 0x00000c02, - QCResExclamationMarks = 0x00000c03, - QCResQuestionMarks = 0x00000c04, - QCBuildingPlaceholder = 0x00000c05, - QCTagQuickRemarks = 0x00000c06, - Undo = 0x00000c17, - Clear = 0x00000c18, - DivertPower = 0x00000c19, - ResetReactorName = 0x00000c1a, - RestoreOxyName = 0x00000c1b, - QCAccADidntReport_QCCrewMe = 0x00000c1c, - QCStaACalledMeeting_QCCrewMe = 0x00000c1d, - QCAccAIsLyingNeg_QCCrewMe = 0x00000c1e, - QCResADid_QCCrewMe = 0x00000c1f, - QCResADidNeg_QCCrewMe = 0x00000c20, - QCResAWas_QCCrewMe = 0x00000c21, - QCResAWasNeg_QCCrewMe = 0x00000c22, - QCResIsBeingFramed_QCCrewMe = 0x00000c23, - QCAccAKilledBNeg_QCCrewMe_ANY = 0x00000c24, - QCStaAWasWithB_QCCrewMe_ANY = 0x00000c25, - QCStaAWasWithB_ANY_QCCrewMe = 0x00000c26, - QCResCloseTo_QCCrewMe_ANY = 0x00000c27, - QCAccAWasChasingB_QCCrewMe_ANY = 0x00000c28, - QCAccAWasChasingBNeg_QCCrewMe_ANY = 0x00000c29, - QCAccAWasChasingB_ANY_QCCrewMe = 0x00000c2a, - QCAccAWasChasingBNeg_ANY_QCCrewMe = 0x00000c2b, - QCStaASawB_QCCrewMe_ANY = 0x00000c2c, - QCAccASawBVent_QCCrewMe_ANY = 0x00000c2d, - QCAccASawBVentNeg_QCCrewMe_ANY = 0x00000c2e, - QCAccASawBVentNeg_ANY_QCCrewMe = 0x00000c2f, - QCResAWasAtB_QCCrewMe_ANY = 0x00000c30, - QCResAWasAtBNeg_QCCrewMe_ANY = 0x00000c31, - QCStaADidB_QCCrewMe_ANY = 0x00000c32, - QCAccIsRole_QCCrewMe_ANY = 0x00000c33, - QCAccIsRoleNeg_QCCrewMe_ANY = 0x00000c34, - QCResProtected_ANY_QCCrewMe = 0x00000c35, - QCCrewSomeone = 0x00000c36, - QCResUrWelcome = 0x00000c37, - QCResNp = 0x00000c38, - QCResYikes = 0x00000c39, - QCResRipCrew = 0x00000c3a, - QCResYeetCrew = 0x00000c3b, - QCSelfWasOnVitals = 0x00000c3c, - QCSawDeadCrewOnVitals = 0x00000c3d, - QCSelfSawTwoCrew = 0x00000c3e, - QCCrewShapeshifted = 0x00000c3f, - QCSelfSawCrewDoVisualTask = 0x00000c40, - QCSelfWasOnDoorlogs = 0x00000c41, - QCSelfWasOnAdmin = 0x00000c42, - QCSelfAmVotingCrew = 0x00000c43, - QCCrewWasPretendingTasks = 0x00000c44, - QCCrewWasPretendingSabotage = 0x00000c45, - QCLobbyMoreImpostors = 0x00000c46, - QCLobbyLessImpostors = 0x00000c47, - QCLobbyConfirmEjects = 0x00000c48, - QCLobbyMoreEmergencyMeetings = 0x00000c49, - QCLobbyLessEmergencyMeetings = 0x00000c4a, - QCLobbyAnonymousVotes = 0x00000c4b, - QCLobbyMoreEmergencyCooldownTime = 0x00000c4c, - QCLobbyLessEmergencyCooldownTime = 0x00000c4d, - QCLobbyMoreDiscussionTime = 0x00000c4e, - QCLobbyLessDiscussionTime = 0x00000c4f, - QCLobbyMoreVotingTime = 0x00000c50, - QCLobbyLessVotingTime = 0x00000c51, - QCLobbyFasterPlayerSpeed = 0x00000c52, - QCLobbySlowerPlayerSpeed = 0x00000c53, - QCLobbyTaskBarUpdates = 0x00000c54, - QCLobbyVisualTasks = 0x00000c55, - QCLobbyMoreCrewmateVision = 0x00000c56, - QCLobbyLessCrewmateVision = 0x00000c57, - QCLobbyMoreImpostorVision = 0x00000c58, - QCLobbyLessImpostorVision = 0x00000c59, - QCLobbyMoreKillCooldownTime = 0x00000c5a, - QCLobbyLessKillCooldownTime = 0x00000c5b, - QCLobbyLongerKillDistance = 0x00000c5c, - QCLobbyShorderKillDistance = 0x00000c5d, - QCLobbyMoreCommonTasks = 0x00000c5e, - QCLobbyLessCommonTasks = 0x00000c5f, - QCLobbyMoreLongTasks = 0x00000c60, - QCLobbyLessLongTasks = 0x00000c61, - QCLobbyMoreShortTasks = 0x00000c62, - QCLobbyLessShortTasks = 0x00000c63, - QCLobbyRoleScientists = 0x00000c64, - QCLobbyRoleGuardianAngels = 0x00000c65, - QCLobbyRoleEngineers = 0x00000c66, - QCLobbyRoleShapeshifters = 0x00000c67, - QCLobbyRoleNone = 0x00000c68, - QCResLess = 0x00000c69, - QCResMore = 0x00000c6a, - QCResNone = 0x00000c6b, - QCLobbyHNSMoreHideTime = 0x00000c6c, - QCLobbyHNSLessHideTime = 0x00000c6d, - QCLobbyHNSMoreFinalHideTime = 0x00000c6e, - QCLobbyHNSLessFinalHideTime = 0x00000c6f, - QCLobbyHNSFlashlightMode = 0x00000c70, - QCLobbyHNSMoreCrewmateFlashlightSize = 0x00000c71, - QCLobbyHNSLessCrewmateFlashlightSize = 0x00000c72, - QCLobbyHNSMoreImpostorFlashlightSize = 0x00000c73, - QCLobbyHNSLessImpostorFlashlightSize = 0x00000c74, - QCLobbyHNSShowNames = 0x00000c75, - QCLobbyHNSMoreVents = 0x00000c76, - QCLobbyHNSLessVents = 0x00000c77, - QCLobbyHNSMoreTimeInVent = 0x00000c78, - QCLobbyHNSLessTimeInVent = 0x00000c79, - QCLobbyHNSMoreFinalHideImpostorSpeed = 0x00000c7a, - QCLobbyHNSLessFinalHideImpostorSpeed = 0x00000c7b, - QCLobbyHNSFinalHideSeekMap = 0x00000c7c, - QCLobbyHNSFinalHidePings = 0x00000c7d, - QCLobbyHNSMorePingInterval = 0x00000c7e, - QCLobbyHNSLessPingInterval = 0x00000c7f, - SettingsColorblind = 0x00000c80, - SettingsHelp = 0x00000c81, - SecLogEntryColorblind = 0x00000c82, - DeleteAccount = 0x00000c83, - DoNotDeleteAccount = 0x00000c84, - AccountDeleteHelp = 0x00000c85, - AccountUnDeleteHelp = 0x00000c86, - ConfirmDelete = 0x00000c87, - ConfirmDeleteAccounts = 0x00000c88, - ConfirmDeleteAccountsEmpty = 0x00000c89, - AccountRequestDelete = 0x00000c8a, - HasBeenKilled = 0x00000c8b, - ScrollList = 0x00000ce4, - ScrollNews = 0x00000ce5, - AmongUsAnnouncements = 0x00000ce6, - AnnouncementErrorSubtitle = 0x00000ce7, - AnnouncementErrorText = 0x00000ce8, - ReadMoreLabel = 0x00000ce9, - ReturnToList = 0x00000cea, - NavigateLinks = 0x00000ceb, - AgeVerificationTitle = 0x00000cec, - AgeVerificationInfoTitle = 0x00000ced, - AgeVerificationInfo = 0x00000cee, - AgeVerificationMoreInfo = 0x00000cef, - EditLabel = 0x00000cf0, - VerifyAgeText = 0x00000cf1, - PlayLabel = 0x00000cf2, - SettingsLabel = 0x00000cf3, - NewsLabel = 0x00000cf4, - AccountLabel = 0x00000cf5, - CreditsLabel = 0x00000cf6, - ShopLabel = 0x00000cf7, - InventoryLabel = 0x00000cf8, - StatsLabel = 0x00000cf9, - FriendsLabel = 0x00000cfa, - GameType = 0x00000dac, - GameTypeError = 0x00000dad, - GameTypeClassic = 0x00000dae, - GameTypeHideAndSeek = 0x00000daf, - PetAction = 0x00000db0, - CreateLabel = 0x00000db1, - TagFiltersTitle = 0x00000db2, - TagFiltersHelpFindGame = 0x00000db3, - TagFiltersHelpCreate = 0x00000db4, - TagsFilteredSingular = 0x00000db5, - TagsFilteredPlural = 0x00000db6, - TagsAppliedSingular = 0x00000db7, - TagsAppliedPlural = 0x00000db8, - DefaultFilterTag_FirstTime = 0x00000db9, - DefaultFilterTag_Casual = 0x00000dba, - DefaultFilterTag_Serious = 0x00000dbb, - DefaultFilterTag_Expert = 0x00000dbc, - HttpErrorContextNone = 0x00000dbd, - HttpErrorContextAuthenticate = 0x00000dbe, - HttpErrorContextRequestGameCode = 0x00000dbf, - HttpErrorContextFindHostServer = 0x00000dc0, - HttpErrorContextRequestGamesList = 0x00000dc1, - HttpErrorUnknown = 0x00000dc2, - HttpErrorBadRequest = 0x00000dc3, - HttpErrorUnauthorized = 0x00000dc4, - HttpErrorForbidden = 0x00000dc5, - HttpErrorNotFound = 0x00000dc6, - HttpErrorMethodNotAllowed = 0x00000dc7, - HttpErrorRequestTimeout = 0x00000dc8, - HttpErrorTooManyRequests = 0x00000dc9, - HttpErrorInternalServerError = 0x00000dca, - HttpErrorBadGateway = 0x00000dcb, - HttpErrorServiceUnavailable = 0x00000dcc, - HttpErrorGatewayTimeout = 0x00000dcd, - }; - -#else - enum StringNames__Enum { - StringNames__Enum_None = 0x00000000, - StringNames__Enum_BackButton = 0x00000001, - StringNames__Enum_AvailableGamesLabel = 0x00000002, - StringNames__Enum_CreateGameButton = 0x00000003, - StringNames__Enum_FindGameButton = 0x00000004, - StringNames__Enum_EnterCode = 0x00000005, - StringNames__Enum_GhostIgnoreTasks = 0x00000006, - StringNames__Enum_GhostDoTasks = 0x00000007, - StringNames__Enum_GhostImpostor = 0x00000008, - StringNames__Enum_ImpostorTask = 0x00000009, - StringNames__Enum_FakeTasks = 0x0000000a, - StringNames__Enum_TaskComplete = 0x0000000b, - StringNames__Enum_ExileTextSP = 0x0000000c, - StringNames__Enum_ExileTextSN = 0x0000000d, - StringNames__Enum_ExileTextPP = 0x0000000e, - StringNames__Enum_ExileTextPN = 0x0000000f, - StringNames__Enum_NoExileSkip = 0x00000010, - StringNames__Enum_NoExileTie = 0x00000011, - StringNames__Enum_ImpostorsRemainS = 0x00000012, - StringNames__Enum_ImpostorsRemainP = 0x00000013, - StringNames__Enum_Hallway = 0x00000014, - StringNames__Enum_Storage = 0x00000015, - StringNames__Enum_Cafeteria = 0x00000016, - StringNames__Enum_Reactor = 0x00000017, - StringNames__Enum_UpperEngine = 0x00000018, - StringNames__Enum_Nav = 0x00000019, - StringNames__Enum_Admin = 0x0000001a, - StringNames__Enum_Electrical = 0x0000001b, - StringNames__Enum_LifeSupp = 0x0000001c, - StringNames__Enum_Shields = 0x0000001d, - StringNames__Enum_MedBay = 0x0000001e, - StringNames__Enum_Security = 0x0000001f, - StringNames__Enum_Weapons = 0x00000020, - StringNames__Enum_LowerEngine = 0x00000021, - StringNames__Enum_Comms = 0x00000022, - StringNames__Enum_Decontamination = 0x00000023, - StringNames__Enum_Launchpad = 0x00000024, - StringNames__Enum_LockerRoom = 0x00000025, - StringNames__Enum_Laboratory = 0x00000026, - StringNames__Enum_Balcony = 0x00000027, - StringNames__Enum_Office = 0x00000028, - StringNames__Enum_Greenhouse = 0x00000029, - StringNames__Enum_DivertPowerTo = 0x0000002a, - StringNames__Enum_AcceptDivertedPower = 0x0000002b, - StringNames__Enum_SubmitScan = 0x0000002c, - StringNames__Enum_PrimeShields = 0x0000002d, - StringNames__Enum_FuelEngines = 0x0000002e, - StringNames__Enum_ChartCourse = 0x0000002f, - StringNames__Enum_StartReactor = 0x00000030, - StringNames__Enum_SwipeCard = 0x00000031, - StringNames__Enum_ClearAsteroids = 0x00000032, - StringNames__Enum_UploadData = 0x00000033, - StringNames__Enum_DownloadData = 0x00000034, - StringNames__Enum_InspectSample = 0x00000035, - StringNames__Enum_EmptyChute = 0x00000036, - StringNames__Enum_EmptyGarbage = 0x00000037, - StringNames__Enum_AlignEngineOutput = 0x00000038, - StringNames__Enum_FixWiring = 0x00000039, - StringNames__Enum_CalibrateDistributor = 0x0000003a, - StringNames__Enum_UnlockManifolds = 0x0000003b, - StringNames__Enum_ResetReactor = 0x0000003c, - StringNames__Enum_FixLights = 0x0000003d, - StringNames__Enum_FixComms = 0x0000003e, - StringNames__Enum_RestoreOxy = 0x0000003f, - StringNames__Enum_CleanO2Filter = 0x00000040, - StringNames__Enum_StabilizeSteering = 0x00000041, - StringNames__Enum_AssembleArtifact = 0x00000042, - StringNames__Enum_SortSamples = 0x00000043, - StringNames__Enum_MeasureWeather = 0x00000044, - StringNames__Enum_EnterIdCode = 0x00000045, - StringNames__Enum_HowToPlayText1 = 0x00000046, - StringNames__Enum_HowToPlayText2 = 0x00000047, - StringNames__Enum_HowToPlayText5 = 0x00000048, - StringNames__Enum_HowToPlayText6 = 0x00000049, - StringNames__Enum_HowToPlayText7 = 0x0000004a, - StringNames__Enum_HowToPlayText81 = 0x0000004b, - StringNames__Enum_HowToPlayText82 = 0x0000004c, - StringNames__Enum_NumImpostorsS = 0x0000004d, - StringNames__Enum_NumImpostorsP = 0x0000004e, - StringNames__Enum_Crewmate = 0x0000004f, - StringNames__Enum_Impostor = 0x00000050, - StringNames__Enum_Victory = 0x00000051, - StringNames__Enum_Defeat = 0x00000052, - StringNames__Enum_CrewmatesDisconnected = 0x00000053, - StringNames__Enum_ImpostorDisconnected = 0x00000054, - StringNames__Enum_HowToPlayText41 = 0x00000055, - StringNames__Enum_HowToPlayText42 = 0x00000056, - StringNames__Enum_HowToPlayText43 = 0x00000057, - StringNames__Enum_HowToPlayText44 = 0x00000058, - StringNames__Enum_HowToPlayTextMap = 0x00000059, - StringNames__Enum_HowToPlayTextCrew1 = 0x0000005a, - StringNames__Enum_HowToPlayTextCrew2 = 0x0000005b, - StringNames__Enum_HowToPlayTextCrew3 = 0x0000005c, - StringNames__Enum_HowToPlayTextCrew4 = 0x0000005d, - StringNames__Enum_HowToPlayTextCrew5 = 0x0000005e, - StringNames__Enum_HowToPlayTextCrew6 = 0x0000005f, - StringNames__Enum_HowToPlayTextImp1 = 0x00000060, - StringNames__Enum_HowToPlayTextImp2 = 0x00000061, - StringNames__Enum_HowToPlayTextImp3 = 0x00000062, - StringNames__Enum_HowToPlayTextImp4 = 0x00000063, - StringNames__Enum_HowToPlayTextImp5 = 0x00000064, - StringNames__Enum_HowToPlayTextImp6 = 0x00000065, - StringNames__Enum_HowToPlayTextImp7 = 0x00000066, - StringNames__Enum_SettingsGeneral = 0x00000067, - StringNames__Enum_SettingsControls = 0x00000068, - StringNames__Enum_SettingsSound = 0x00000069, - StringNames__Enum_SettingsGraphics = 0x0000006a, - StringNames__Enum_SettingsData = 0x0000006b, - StringNames__Enum_SettingsCensorChat = 0x0000006c, - StringNames__Enum_SettingsMusic = 0x0000006d, - StringNames__Enum_SettingsSFX = 0x0000006e, - StringNames__Enum_SettingsOn = 0x0000006f, - StringNames__Enum_SettingsOff = 0x00000070, - StringNames__Enum_SettingsSendTelemetry = 0x00000071, - StringNames__Enum_SettingsControlMode = 0x00000072, - StringNames__Enum_SettingsTouchMode = 0x00000073, - StringNames__Enum_SettingsJoystickMode = 0x00000074, - StringNames__Enum_SettingsKeyboardMode = 0x00000075, - StringNames__Enum_SettingsFullscreen = 0x00000076, - StringNames__Enum_SettingsResolution = 0x00000077, - StringNames__Enum_SettingsApply = 0x00000078, - StringNames__Enum_SettingsPersonalizeAds = 0x00000079, - StringNames__Enum_SettingsLanguage = 0x0000007a, - StringNames__Enum_SettingsJoystickSize = 0x0000007b, - StringNames__Enum_SettingsMouseMode = 0x0000007c, - StringNames__Enum_PlayerColor = 0x0000007d, - StringNames__Enum_PlayerHat = 0x0000007e, - StringNames__Enum_PlayerSkin = 0x0000007f, - StringNames__Enum_PlayerPet = 0x00000080, - StringNames__Enum_GameSettings = 0x00000081, - StringNames__Enum_GameRecommendedSettings = 0x00000082, - StringNames__Enum_GameCustomSettings = 0x00000083, - StringNames__Enum_GameMapName = 0x00000084, - StringNames__Enum_GameNumImpostors = 0x00000085, - StringNames__Enum_GameNumMeetings = 0x00000086, - StringNames__Enum_GameDiscussTime = 0x00000087, - StringNames__Enum_GameVotingTime = 0x00000088, - StringNames__Enum_GamePlayerSpeed = 0x00000089, - StringNames__Enum_GameCrewLight = 0x0000008a, - StringNames__Enum_GameImpostorLight = 0x0000008b, - StringNames__Enum_GameKillCooldown = 0x0000008c, - StringNames__Enum_GameKillDistance = 0x0000008d, - StringNames__Enum_GameCommonTasks = 0x0000008e, - StringNames__Enum_GameLongTasks = 0x0000008f, - StringNames__Enum_GameShortTasks = 0x00000090, - StringNames__Enum_MatchMapName = 0x00000091, - StringNames__Enum_MatchLanguage = 0x00000092, - StringNames__Enum_MatchImpostors = 0x00000093, - StringNames__Enum_MatchMaxPlayers = 0x00000094, - StringNames__Enum_Cancel = 0x00000095, - StringNames__Enum_Confirm = 0x00000096, - StringNames__Enum_Limit = 0x00000097, - StringNames__Enum_RoomCode = 0x00000098, - StringNames__Enum_LeaveGame = 0x00000099, - StringNames__Enum_ReturnToGame = 0x0000009a, - StringNames__Enum_LocalHelp = 0x0000009b, - StringNames__Enum_OnlineHelp = 0x0000009c, - StringNames__Enum_SettingsVSync = 0x0000009d, - StringNames__Enum_EmergencyCount = 0x0000009e, - StringNames__Enum_EmergencyNotReady = 0x0000009f, - StringNames__Enum_EmergencyDuringCrisis = 0x000000a0, - StringNames__Enum_EmergencyRequested = 0x000000a1, - StringNames__Enum_GameEmergencyCooldown = 0x000000a2, - StringNames__Enum_BuyBeverage = 0x000000a3, - StringNames__Enum_WeatherEta = 0x000000a4, - StringNames__Enum_WeatherComplete = 0x000000a5, - StringNames__Enum_ProcessData = 0x000000a6, - StringNames__Enum_RunDiagnostics = 0x000000a7, - StringNames__Enum_WaterPlants = 0x000000a8, - StringNames__Enum_PickAnomaly = 0x000000a9, - StringNames__Enum_WaterPlantsGetCan = 0x000000aa, - StringNames__Enum_AuthOfficeOkay = 0x000000ab, - StringNames__Enum_AuthCommsOkay = 0x000000ac, - StringNames__Enum_AuthOfficeActive = 0x000000ad, - StringNames__Enum_AuthCommsActive = 0x000000ae, - StringNames__Enum_AuthOfficeNotActive = 0x000000af, - StringNames__Enum_AuthCommsNotActive = 0x000000b0, - StringNames__Enum_SecLogEntry = 0x000000b1, - StringNames__Enum_EnterName = 0x000000b2, - StringNames__Enum_SwipeCardPleaseSwipe = 0x000000b3, - StringNames__Enum_SwipeCardBadRead = 0x000000b4, - StringNames__Enum_SwipeCardTooFast = 0x000000b5, - StringNames__Enum_SwipeCardTooSlow = 0x000000b6, - StringNames__Enum_SwipeCardAccepted = 0x000000b7, - StringNames__Enum_ReactorHoldToStop = 0x000000b8, - StringNames__Enum_ReactorWaiting = 0x000000b9, - StringNames__Enum_ReactorNominal = 0x000000ba, - StringNames__Enum_MeetingWhoIsTitle = 0x000000bb, - StringNames__Enum_MeetingVotingBegins = 0x000000bc, - StringNames__Enum_MeetingVotingEnds = 0x000000bd, - StringNames__Enum_MeetingVotingResults = 0x000000be, - StringNames__Enum_MeetingProceeds = 0x000000bf, - StringNames__Enum_MeetingHasVoted = 0x000000c0, - StringNames__Enum_DataPolicyTitle = 0x000000c1, - StringNames__Enum_DataPolicyText = 0x000000c2, - StringNames__Enum_DataPolicyWhat = 0x000000c3, - StringNames__Enum_AdPolicyTitle = 0x000000c4, - StringNames__Enum_AdPolicyText = 0x000000c5, - StringNames__Enum_Accept = 0x000000c6, - StringNames__Enum_RemoveAds = 0x000000c7, - StringNames__Enum_SwipeCardPleaseInsert = 0x000000c8, - StringNames__Enum_LogNorth = 0x000000c9, - StringNames__Enum_LogSouthEast = 0x000000ca, - StringNames__Enum_LogSouthWest = 0x000000cb, - StringNames__Enum_SettingShort = 0x000000cc, - StringNames__Enum_SettingMedium = 0x000000cd, - StringNames__Enum_SettingLong = 0x000000ce, - StringNames__Enum_SamplesPress = 0x000000cf, - StringNames__Enum_SamplesAdding = 0x000000d0, - StringNames__Enum_SamplesSelect = 0x000000d1, - StringNames__Enum_SamplesThanks = 0x000000d2, - StringNames__Enum_SamplesComplete = 0x000000d3, - StringNames__Enum_AstDestroyed = 0x000000d4, - StringNames__Enum_TaskTestTitle = 0x000000d5, - StringNames__Enum_BeginDiagnostics = 0x000000d6, - StringNames__Enum_UserLeftGame = 0x000000d7, - StringNames__Enum_GameStarting = 0x000000d8, - StringNames__Enum_Tasks = 0x000000d9, - StringNames__Enum_StatsTitle = 0x000000da, - StringNames__Enum_StatsBodiesReported = 0x000000db, - StringNames__Enum_StatsEmergenciesCalled = 0x000000dc, - StringNames__Enum_StatsTasksCompleted = 0x000000dd, - StringNames__Enum_StatsAllTasksCompleted = 0x000000de, - StringNames__Enum_StatsSabotagesFixed = 0x000000df, - StringNames__Enum_StatsImpostorKills = 0x000000e0, - StringNames__Enum_StatsTimesMurdered = 0x000000e1, - StringNames__Enum_StatsTimesEjected = 0x000000e2, - StringNames__Enum_StatsCrewmateStreak = 0x000000e3, - StringNames__Enum_StatsGamesImpostor = 0x000000e4, - StringNames__Enum_StatsGamesCrewmate = 0x000000e5, - StringNames__Enum_StatsGamesStarted = 0x000000e6, - StringNames__Enum_StatsGamesFinished = 0x000000e7, - StringNames__Enum_StatsImpostorVoteWins = 0x000000e8, - StringNames__Enum_StatsImpostorKillsWins = 0x000000e9, - StringNames__Enum_StatsImpostorSabotageWins = 0x000000ea, - StringNames__Enum_StatsCrewmateVoteWins = 0x000000eb, - StringNames__Enum_StatsCrewmateTaskWins = 0x000000ec, - StringNames__Enum_MedscanRequested = 0x000000ed, - StringNames__Enum_MedscanWaitingFor = 0x000000ee, - StringNames__Enum_MedscanCompleted = 0x000000ef, - StringNames__Enum_MedscanCompleteIn = 0x000000f0, - StringNames__Enum_MonitorOxygen = 0x000000f1, - StringNames__Enum_StoreArtifacts = 0x000000f2, - StringNames__Enum_FillCanisters = 0x000000f3, - StringNames__Enum_FixWeatherNode = 0x000000f4, - StringNames__Enum_InsertKeys = 0x000000f5, - StringNames__Enum_ResetSeismic = 0x000000f6, - StringNames__Enum_SeismicHoldToStop = 0x000000f7, - StringNames__Enum_SeismicNominal = 0x000000f8, - StringNames__Enum_ScanBoardingPass = 0x000000f9, - StringNames__Enum_OpenWaterways = 0x000000fa, - StringNames__Enum_ReplaceWaterJug = 0x000000fb, - StringNames__Enum_RepairDrill = 0x000000fc, - StringNames__Enum_AlignTelescope = 0x000000fd, - StringNames__Enum_RecordTemperature = 0x000000fe, - StringNames__Enum_RebootWifi = 0x000000ff, - StringNames__Enum_WifiRebootRequired = 0x00000100, - StringNames__Enum_WifiPleasePowerOn = 0x00000101, - StringNames__Enum_WifiPleaseWait = 0x00000102, - StringNames__Enum_WifiPleaseReturnIn = 0x00000103, - StringNames__Enum_WifiRebootComplete = 0x00000104, - StringNames__Enum_Outside = 0x00000105, - StringNames__Enum_GameSecondsAbbrev = 0x00000106, - StringNames__Enum_Engines = 0x00000107, - StringNames__Enum_Dropship = 0x00000108, - StringNames__Enum_Decontamination2 = 0x00000109, - StringNames__Enum_Specimens = 0x0000010a, - StringNames__Enum_BoilerRoom = 0x0000010b, - StringNames__Enum_GameOverImpostorDead = 0x0000010c, - StringNames__Enum_GameOverImpostorKills = 0x0000010d, - StringNames__Enum_GameOverTaskWin = 0x0000010e, - StringNames__Enum_GameOverSabotage = 0x0000010f, - StringNames__Enum_GameConfirmImpostor = 0x00000110, - StringNames__Enum_GameVisualTasks = 0x00000111, - StringNames__Enum_ExileTextNonConfirm = 0x00000112, - StringNames__Enum_GameAnonymousVotes = 0x00000113, - StringNames__Enum_GameTaskBarMode = 0x00000114, - StringNames__Enum_SettingNormalTaskMode = 0x00000115, - StringNames__Enum_SettingMeetingTaskMode = 0x00000116, - StringNames__Enum_SettingInvisibleTaskMode = 0x00000117, - StringNames__Enum_PlainYes = 0x00000118, - StringNames__Enum_PlainNo = 0x00000119, - StringNames__Enum_PrivacyPolicyTitle = 0x0000011a, - StringNames__Enum_PrivacyPolicyText = 0x0000011b, - StringNames__Enum_ManageDataButton = 0x0000011c, - StringNames__Enum_UnderstandButton = 0x0000011d, - StringNames__Enum_HowToPlayText2Switch = 0x0000011e, - StringNames__Enum_ChatRateLimit = 0x0000011f, - StringNames__Enum_TotalTasksCompleted = 0x00000120, - StringNames__Enum_ServerNA = 0x00000121, - StringNames__Enum_ServerEU = 0x00000122, - StringNames__Enum_ServerAS = 0x00000123, - StringNames__Enum_ServerSA = 0x00000124, - StringNames__Enum_LangEnglish = 0x00000125, - StringNames__Enum_LangFrench = 0x00000126, - StringNames__Enum_LangItalian = 0x00000127, - StringNames__Enum_LangGerman = 0x00000128, - StringNames__Enum_LangSpanish = 0x00000129, - StringNames__Enum_LangSpanishLATAM = 0x0000012a, - StringNames__Enum_LangBrazPort = 0x0000012b, - StringNames__Enum_LangPort = 0x0000012c, - StringNames__Enum_LangRussian = 0x0000012d, - StringNames__Enum_LangJapanese = 0x0000012e, - StringNames__Enum_LangKorean = 0x0000012f, - StringNames__Enum_LangDutch = 0x00000130, - StringNames__Enum_LangFilipino = 0x00000131, - StringNames__Enum_PlayerName = 0x00000132, - StringNames__Enum_MyTablet = 0x00000133, - StringNames__Enum_Download = 0x00000134, - StringNames__Enum_DownloadComplete = 0x00000135, - StringNames__Enum_DownloadTestEstTimeS = 0x00000136, - StringNames__Enum_DownloadTestEstTimeMS = 0x00000137, - StringNames__Enum_DownloadTestEstTimeHMS = 0x00000138, - StringNames__Enum_DownloadTestEstTimeDHMS = 0x00000139, - StringNames__Enum_Upload = 0x0000013a, - StringNames__Enum_Headquarters = 0x0000013b, - StringNames__Enum_GrabCoffee = 0x0000013c, - StringNames__Enum_TakeBreak = 0x0000013d, - StringNames__Enum_DontNeedWait = 0x0000013e, - StringNames__Enum_DoSomethingElse = 0x0000013f, - StringNames__Enum_NodeTB = 0x00000140, - StringNames__Enum_NodeIRO = 0x00000141, - StringNames__Enum_NodeGI = 0x00000142, - StringNames__Enum_NodePD = 0x00000143, - StringNames__Enum_NodeCA = 0x00000144, - StringNames__Enum_NodeMLG = 0x00000145, - StringNames__Enum_Vending = 0x00000146, - StringNames__Enum_OtherLanguage = 0x00000147, - StringNames__Enum_ImposterAmtAny = 0x00000148, - StringNames__Enum_VitalsORGN = 0x00000149, - StringNames__Enum_VitalsBLUE = 0x0000014a, - StringNames__Enum_VitalsRED = 0x0000014b, - StringNames__Enum_VitalsBRWN = 0x0000014c, - StringNames__Enum_VitalsGRN = 0x0000014d, - StringNames__Enum_VitalsPINK = 0x0000014e, - StringNames__Enum_VitalsWHTE = 0x0000014f, - StringNames__Enum_VitalsYLOW = 0x00000150, - StringNames__Enum_VitalsBLAK = 0x00000151, - StringNames__Enum_VitalsPURP = 0x00000152, - StringNames__Enum_VitalsCYAN = 0x00000153, - StringNames__Enum_VitalsLIME = 0x00000154, - StringNames__Enum_VitalsOK = 0x00000155, - StringNames__Enum_VitalsDEAD = 0x00000156, - StringNames__Enum_VitalsDC = 0x00000157, - StringNames__Enum_ColorOrange = 0x00000158, - StringNames__Enum_ColorBlue = 0x00000159, - StringNames__Enum_ColorRed = 0x0000015a, - StringNames__Enum_ColorBrown = 0x0000015b, - StringNames__Enum_ColorGreen = 0x0000015c, - StringNames__Enum_ColorPink = 0x0000015d, - StringNames__Enum_ColorWhite = 0x0000015e, - StringNames__Enum_ColorYellow = 0x0000015f, - StringNames__Enum_ColorBlack = 0x00000160, - StringNames__Enum_ColorPurple = 0x00000161, - StringNames__Enum_ColorCyan = 0x00000162, - StringNames__Enum_ColorLime = 0x00000163, - StringNames__Enum_MedID = 0x00000164, - StringNames__Enum_MedC = 0x00000165, - StringNames__Enum_MedHT = 0x00000166, - StringNames__Enum_MedBT = 0x00000167, - StringNames__Enum_MedWT = 0x00000168, - StringNames__Enum_MedETA = 0x00000169, - StringNames__Enum_MedHello = 0x0000016a, - StringNames__Enum_PetFailFetchData = 0x0000016b, - StringNames__Enum_BadResult = 0x0000016c, - StringNames__Enum_More = 0x0000016d, - StringNames__Enum_Processing = 0x0000016e, - StringNames__Enum_ExitGame = 0x0000016f, - StringNames__Enum_WaitingForHost = 0x00000170, - StringNames__Enum_LeftGameError = 0x00000171, - StringNames__Enum_PlayerWasBannedBy = 0x00000172, - StringNames__Enum_PlayerWasKickedBy = 0x00000173, - StringNames__Enum_CamEast = 0x00000174, - StringNames__Enum_CamCentral = 0x00000175, - StringNames__Enum_CamNortheast = 0x00000176, - StringNames__Enum_CamSouth = 0x00000177, - StringNames__Enum_CamSouthwest = 0x00000178, - StringNames__Enum_CamNorthwest = 0x00000179, - StringNames__Enum_LoadingFailed = 0x0000017a, - StringNames__Enum_LobbySizeWarning = 0x0000017b, - StringNames__Enum_Okay = 0x0000017c, - StringNames__Enum_OkayDontShow = 0x0000017d, - StringNames__Enum_Nevermind = 0x0000017e, - StringNames__Enum_Dummy = 0x0000017f, - StringNames__Enum_Bad = 0x00000180, - StringNames__Enum_Status = 0x00000181, - StringNames__Enum_Fine = 0x00000182, - StringNames__Enum_OK = 0x00000183, - StringNames__Enum_PetTryOn = 0x00000184, - StringNames__Enum_SecondsAbbv = 0x00000185, - StringNames__Enum_SecurityLogsSystem = 0x00000186, - StringNames__Enum_SecurityCamsSystem = 0x00000187, - StringNames__Enum_AdminMapSystem = 0x00000188, - StringNames__Enum_VitalsSystem = 0x00000189, - StringNames__Enum_BanButton = 0x0000018a, - StringNames__Enum_KickButton = 0x0000018b, - StringNames__Enum_ReportButton = 0x0000018c, - StringNames__Enum_ReportConfirmation = 0x0000018d, - StringNames__Enum_ReportBadName = 0x0000018e, - StringNames__Enum_ReportBadChat = 0x0000018f, - StringNames__Enum_ReportHacking = 0x00000190, - StringNames__Enum_ReportHarassment = 0x00000191, - StringNames__Enum_ReportWhy = 0x00000192, - StringNames__Enum_Visor = 0x00000193, - StringNames__Enum_NamePlate = 0x00000194, - StringNames__Enum_Visors = 0x00000195, - StringNames__Enum_NamePlates = 0x00000196, - StringNames__Enum_Cosmicube = 0x00000197, - StringNames__Enum_Cosmicubes = 0x00000198, - StringNames__Enum_Activate = 0x00000199, - StringNames__Enum_Deactivate = 0x0000019a, - StringNames__Enum_Owned = 0x0000019b, - StringNames__Enum_Purchase = 0x0000019c, - StringNames__Enum_CosmicubeProgression = 0x0000019d, - StringNames__Enum_ViewCube = 0x0000019e, - StringNames__Enum_ConfirmPurchaseHeader = 0x0000019f, - StringNames__Enum_ConfirmPurchaseText = 0x000001a0, - StringNames__Enum_DeactivateCube = 0x000001a1, - StringNames__Enum_ActivateCube = 0x000001a2, - StringNames__Enum_Bundles = 0x000001a3, - StringNames__Enum_Stars = 0x000001a4, - StringNames__Enum_PurchasingLabel = 0x000001a5, - StringNames__Enum_MouseMovement = 0x000001a6, - StringNames__Enum_KeyboardOptions = 0x000001a7, - StringNames__Enum_RemapBindings = 0x000001a8, - StringNames__Enum_KeyboardBindingsHeader = 0x000001a9, - StringNames__Enum_ExitButton = 0x000001aa, - StringNames__Enum_PolishRuby = 0x000001f4, - StringNames__Enum_ResetBreakers = 0x000001f5, - StringNames__Enum_Decontaminate = 0x000001f6, - StringNames__Enum_MakeBurger = 0x000001f7, - StringNames__Enum_UnlockSafe = 0x000001f8, - StringNames__Enum_SortRecords = 0x000001f9, - StringNames__Enum_PutAwayPistols = 0x000001fa, - StringNames__Enum_FixShower = 0x000001fb, - StringNames__Enum_CleanToilet = 0x000001fc, - StringNames__Enum_DressMannequin = 0x000001fd, - StringNames__Enum_PickUpTowels = 0x000001fe, - StringNames__Enum_RewindTapes = 0x000001ff, - StringNames__Enum_StartFans = 0x00000200, - StringNames__Enum_DevelopPhotos = 0x00000201, - StringNames__Enum_GetBiggolSword = 0x00000202, - StringNames__Enum_PutAwayRifles = 0x00000203, - StringNames__Enum_StopCharles = 0x00000204, - StringNames__Enum_AuthLeftOkay = 0x00000205, - StringNames__Enum_AuthRightOkay = 0x00000206, - StringNames__Enum_AuthLeftActive = 0x00000207, - StringNames__Enum_AuthRightActive = 0x00000208, - StringNames__Enum_AuthLeftNotActive = 0x00000209, - StringNames__Enum_AuthRightNotActive = 0x0000020a, - StringNames__Enum_VaultRoom = 0x00000226, - StringNames__Enum_Cockpit = 0x00000227, - StringNames__Enum_Armory = 0x00000228, - StringNames__Enum_Kitchen = 0x00000229, - StringNames__Enum_ViewingDeck = 0x0000022a, - StringNames__Enum_HallOfPortraits = 0x0000022b, - StringNames__Enum_Medical = 0x0000022c, - StringNames__Enum_CargoBay = 0x0000022d, - StringNames__Enum_Ventilation = 0x0000022e, - StringNames__Enum_Showers = 0x0000022f, - StringNames__Enum_Engine = 0x00000230, - StringNames__Enum_Brig = 0x00000231, - StringNames__Enum_MeetingRoom = 0x00000232, - StringNames__Enum_Records = 0x00000233, - StringNames__Enum_Lounge = 0x00000234, - StringNames__Enum_GapRoom = 0x00000235, - StringNames__Enum_MainHall = 0x00000236, - StringNames__Enum_RevealCode = 0x00000237, - StringNames__Enum_DirtyHeader = 0x00000238, - StringNames__Enum_ErrorServerOverload = 0x000002bc, - StringNames__Enum_ErrorIntentionalLeaving = 0x000002bd, - StringNames__Enum_ErrorFocusLost = 0x000002be, - StringNames__Enum_ErrorBanned = 0x000002bf, - StringNames__Enum_ErrorKicked = 0x000002c0, - StringNames__Enum_ErrorBannedNoCode = 0x000002c1, - StringNames__Enum_ErrorKickedNoCode = 0x000002c2, - StringNames__Enum_ErrorHacking = 0x000002c3, - StringNames__Enum_ErrorFullGame = 0x000002c4, - StringNames__Enum_ErrorStartedGame = 0x000002c5, - StringNames__Enum_ErrorNotFoundGame = 0x000002c6, - StringNames__Enum_ErrorInactivity = 0x000002c7, - StringNames__Enum_ErrorGenericOnlineDisconnect = 0x000002c8, - StringNames__Enum_ErrorGenericLocalDisconnect = 0x000002c9, - StringNames__Enum_ErrorInvalidName = 0x000002ca, - StringNames__Enum_ErrorUnknown = 0x000002cb, - StringNames__Enum_ErrorIncorrectVersion = 0x000002cc, - StringNames__Enum_ErrorNotAuthenticated = 0x000002cd, - StringNames__Enum_ErrorInternalServer = 0x000002ce, - StringNames__Enum_ErrorPlatformLock = 0x000002cf, - StringNames__Enum_ErrorLobbyInactivity = 0x000002d0, - StringNames__Enum_ErrorMatchmakerInactivity = 0x000002d1, - StringNames__Enum_ErrorInvalidGameOptions = 0x000002d2, - StringNames__Enum_ErrorNoServersAvailable = 0x000002d3, - StringNames__Enum_ErrorQuickmatchDisabled = 0x000002d4, - StringNames__Enum_ErrorTooManyGames = 0x000002d5, - StringNames__Enum_ErrorDuplicateConnection = 0x000002d6, - StringNames__Enum_ErrorTooManyRequests = 0x000002d7, - StringNames__Enum_ErrorSanction = 0x000002d8, - StringNames__Enum_VentDirection = 0x000003e8, - StringNames__Enum_VentMove = 0x000003e9, - StringNames__Enum_MenuNavigate = 0x000003ea, - StringNames__Enum_NoTranslation = 0x000003eb, - StringNames__Enum_NsoError = 0x000003ec, - StringNames__Enum_RolesSettings = 0x000005dc, - StringNames__Enum_ScientistRole = 0x000005dd, - StringNames__Enum_EngineerRole = 0x000005de, - StringNames__Enum_GuardianAngelRole = 0x000005df, - StringNames__Enum_ShapeshifterRole = 0x000005e0, - StringNames__Enum_ScientistBlurb = 0x000005e1, - StringNames__Enum_EngineerBlurb = 0x000005e2, - StringNames__Enum_GuardianAngelBlurb = 0x000005e3, - StringNames__Enum_ShapeshifterBlurb = 0x000005e4, - StringNames__Enum_CrewmateBlurb = 0x000005e5, - StringNames__Enum_ImpostorBlurb = 0x000005e6, - StringNames__Enum_YourRoleIs = 0x000005e7, - StringNames__Enum_ShapeshiftAbility = 0x000005e8, - StringNames__Enum_VentAbility = 0x000005e9, - StringNames__Enum_VitalsAbility = 0x000005ea, - StringNames__Enum_ProtectAbility = 0x000005eb, - StringNames__Enum_ShapeshiftAbilityUndo = 0x000005ec, - StringNames__Enum_RoleChanceAndQuantity = 0x000005ed, - StringNames__Enum_ProtectedRecently = 0x000005ee, - StringNames__Enum_ShapeshifterDuration = 0x000005ef, - StringNames__Enum_ShapeshifterCooldown = 0x000005f0, - StringNames__Enum_ShapeshifterLeaveSkin = 0x000005f1, - StringNames__Enum_ScientistCooldown = 0x000005f2, - StringNames__Enum_GuardianAngelCooldown = 0x000005f3, - StringNames__Enum_EngineerCooldown = 0x000005f4, - StringNames__Enum_ScientistBlurbMed = 0x000005f5, - StringNames__Enum_ScientistBlurbLong = 0x000005f6, - StringNames__Enum_EngineerBlurbMed = 0x000005f7, - StringNames__Enum_EngineerBlurbLong = 0x000005f8, - StringNames__Enum_GuardianAngelBlurbMed = 0x000005f9, - StringNames__Enum_GuardianAngelBlurbLong = 0x000005fa, - StringNames__Enum_ShapeshifterBlurbMed = 0x000005fb, - StringNames__Enum_ShapeshifterBlurbLong = 0x000005fc, - StringNames__Enum_RoleHint = 0x000005fd, - StringNames__Enum_EngineerInVentCooldown = 0x000005fe, - StringNames__Enum_ScientistBatteryCharge = 0x000005ff, - StringNames__Enum_GuardianAngelDuration = 0x00000600, - StringNames__Enum_GuardianAngelImpostorSeeProtect = 0x00000601, - StringNames__Enum_StatsRoleWins = 0x00000602, - StringNames__Enum_StatsEngineerVents = 0x00000603, - StringNames__Enum_StatsScientistChargesGained = 0x00000604, - StringNames__Enum_StatsGuardianAngelCrewmatesProtected = 0x00000605, - StringNames__Enum_StatsShapeshifterShiftedKills = 0x00000606, - StringNames__Enum_CrewmateGhostRole = 0x00000607, - StringNames__Enum_ImpostorGhostRole = 0x00000608, - StringNames__Enum_HauntAbilityName = 0x00000609, - StringNames__Enum_SeekButton = 0x0000060a, - StringNames__Enum_SanctionDuration = 0x000006a4, - StringNames__Enum_SanctionPermanent = 0x000006a5, - StringNames__Enum_SanctionConduct = 0x000006a6, - StringNames__Enum_SanctionImpersonationCeleb = 0x000006a7, - StringNames__Enum_SanctionSpamming = 0x000006a8, - StringNames__Enum_SanctionInappropriateNameUnsportsmanlike = 0x000006a9, - StringNames__Enum_SanctionUnsportsmanlikeConduct = 0x000006aa, - StringNames__Enum_SanctionImpersonationDevelopers = 0x000006ab, - StringNames__Enum_SanctionInappropriateChatPersonalInfo = 0x000006ac, - StringNames__Enum_SanctionInappropriateNameDerogatory = 0x000006ad, - StringNames__Enum_SanctionInappropriateNameNsfw = 0x000006ae, - StringNames__Enum_SanctionBullying = 0x000006af, - StringNames__Enum_SanctionCheatingHacking = 0x000006b0, - StringNames__Enum_SanctionInappropriateChatDating = 0x000006b1, - StringNames__Enum_SanctionWeaponizingRules = 0x000006b2, - StringNames__Enum_SanctionRepeatOffender3 = 0x000006b3, - StringNames__Enum_SanctionSexualMisconduct = 0x000006b4, - StringNames__Enum_SanctionDoxing = 0x000006b5, - StringNames__Enum_SanctionIllegalActivity = 0x000006b6, - StringNames__Enum_SanctionHarassment = 0x000006b7, - StringNames__Enum_SanctionSelfHarmPromotion = 0x000006b8, - StringNames__Enum_SanctionRepeatOffender10 = 0x000006b9, - StringNames__Enum_SanctionUnknown = 0x000006ba, - StringNames__Enum_ScreenShakeOption = 0x0000076c, - StringNames__Enum_FeaturedItems = 0x0000076d, - StringNames__Enum_FeaturedBundles = 0x0000076e, - StringNames__Enum_FeaturedCubes = 0x0000076f, - StringNames__Enum_BugReportPopUpAttachScreenshotDesc = 0x00000770, - StringNames__Enum_UserIdTokenError = 0x00000771, - StringNames__Enum_NewGameMode = 0x00000772, - StringNames__Enum_NewModeInfo = 0x00000773, - StringNames__Enum_HideSeekHowToPlayTitleOne = 0x00000774, - StringNames__Enum_HideSeekHowToPlayCaptionOne = 0x00000775, - StringNames__Enum_HideSeekHowToPlayCaptionTwo = 0x00000776, - StringNames__Enum_HideSeekHowToPlayCaptionThree = 0x00000777, - StringNames__Enum_HideSeekHowToPlayPageOne = 0x00000778, - StringNames__Enum_HideSeekHowToPlayImpostorOne = 0x00000779, - StringNames__Enum_HideSeekHowToPlaySubtextOne = 0x0000077a, - StringNames__Enum_HideSeekHowToPlayCrewmateInfoOne = 0x0000077b, - StringNames__Enum_HideSeekHowToPlayCrewmateInfoTwo = 0x0000077c, - StringNames__Enum_HideSeekHowToPlayImpostorInfoOne = 0x0000077d, - StringNames__Enum_HideSeekHowToPlayFlashlightDefault = 0x0000077e, - StringNames__Enum_HideSeekHowToPlayFinalHide = 0x0000077f, - StringNames__Enum_HideSeekHowToPlayFlashlightMobile = 0x00000780, - StringNames__Enum_HideSeekHowToPlayFlashlightSwitch = 0x00000781, - StringNames__Enum_HideSeekHowToPlayFlashlightConsoles = 0x00000782, - StringNames__Enum_HideSeekHowToPlayFlashlightPlayStation = 0x00000783, - StringNames__Enum_QCInputSelf = 0x00000785, - StringNames__Enum_QCInputFavorite = 0x00000786, - StringNames__Enum_QCCrewMyself = 0x0000079e, - StringNames__Enum_QCTagSelf = 0x0000079f, - StringNames__Enum_QCTagFavorites = 0x000007a0, - StringNames__Enum_QCBuilderHeader = 0x000007a1, - StringNames__Enum_QCRemarks = 0x000007a2, - StringNames__Enum_QCCrewDead = 0x000007a3, - StringNames__Enum_QCSelfVoted = 0x000007a4, - StringNames__Enum_QCSelfReportedBody = 0x000007a5, - StringNames__Enum_QCSelfCams = 0x000007a6, - StringNames__Enum_QCCrewReportedBody = 0x000007a7, - StringNames__Enum_QCCrewCams = 0x000007a8, - StringNames__Enum_QCSelfWasProtected = 0x000007a9, - StringNames__Enum_QCCrewWasProtected = 0x000007aa, - StringNames__Enum_QCSelfWasntMe = 0x000007ab, - StringNames__Enum_QCWhoWasAt = 0x000007ac, - StringNames__Enum_QCSelfDoingTask = 0x000007ad, - StringNames__Enum_QCWhoIsRole = 0x000007ae, - StringNames__Enum_QCSelfFixedSystem = 0x000007af, - StringNames__Enum_QCCrewFixedSystem = 0x000007b0, - StringNames__Enum_QCSelfAccAtLocation = 0x000007b1, - StringNames__Enum_QCSelfDidTaskAtLocation = 0x000007b2, - StringNames__Enum_QCCrewDidTaskAtLocation = 0x000007b3, - StringNames__Enum_QCSelfSawCrewVentAtLocation = 0x000007b4, - StringNames__Enum_QCSelfDidntVent = 0x000007b5, - StringNames__Enum_QCFollowMe = 0x000007b6, - StringNames__Enum_QCItsNotMe = 0x000007b7, - StringNames__Enum_QCSelfDoneWithTasks = 0x000007b8, - StringNames__Enum_QCGhostsDoYourTasks = 0x000007b9, - StringNames__Enum_QCSelfNotTheImpostor = 0x000007ba, - StringNames__Enum_QCHello = 0x000007bb, - StringNames__Enum_QCThanks = 0x000007bc, - StringNames__Enum_QCSorry = 0x000007bd, - StringNames__Enum_QCGG = 0x000007be, - StringNames__Enum_QCBye = 0x000007bf, - StringNames__Enum_QCWhereWasTheBody = 0x000007c0, - StringNames__Enum_QCSelfReady = 0x000007c1, - StringNames__Enum_QCSelfWasRole = 0x000007c2, - StringNames__Enum_QCWhoWasRole = 0x000007c3, - StringNames__Enum_QCCoolOutfitCrew = 0x000007c4, - StringNames__Enum_QCLocationLaptop = 0x000007d0, - StringNames__Enum_QCLocationSkeld = 0x000007d1, - StringNames__Enum_QCLocationMira = 0x000007d2, - StringNames__Enum_QCLocationPolus = 0x000007d3, - StringNames__Enum_QCSystemsStart = 0x000007d4, - StringNames__Enum_QCSystemsKick = 0x000007d5, - StringNames__Enum_QCCrewI = 0x000007d6, - StringNames__Enum_QCCrewMe = 0x000007d7, - StringNames__Enum_QCCrewNoOne = 0x000007d8, - StringNames__Enum_QCAccAKilledB = 0x000007d9, - StringNames__Enum_QCAccAKilledBNeg = 0x000007da, - StringNames__Enum_QCAccAIsSuspicious = 0x000007db, - StringNames__Enum_QCAccAIsSuspiciousNeg = 0x000007dc, - StringNames__Enum_QCAccASawBVent = 0x000007dd, - StringNames__Enum_QCAccASawBVentNeg = 0x000007de, - StringNames__Enum_QCAccAWasChasingB = 0x000007df, - StringNames__Enum_QCAccAWasChasingBNeg = 0x000007e0, - StringNames__Enum_QCAccAIsLying = 0x000007e1, - StringNames__Enum_QCAccAIsLyingNeg = 0x000007e2, - StringNames__Enum_QCAccVoteA = 0x000007e3, - StringNames__Enum_QCAccVoteANeg = 0x000007e4, - StringNames__Enum_QCAccADidntReport = 0x000007e5, - StringNames__Enum_QCResYes = 0x000007e6, - StringNames__Enum_QCResNo = 0x000007e7, - StringNames__Enum_QCResDontKnow = 0x000007e8, - StringNames__Enum_QCResDontKnowNeg = 0x000007e9, - StringNames__Enum_QCResAWas = 0x000007ea, - StringNames__Enum_QCResAWasNeg = 0x000007eb, - StringNames__Enum_QCResADid = 0x000007ec, - StringNames__Enum_QCResADidNeg = 0x000007ed, - StringNames__Enum_QCResVote = 0x000007ee, - StringNames__Enum_QCResVoteNeg = 0x000007ef, - StringNames__Enum_QCResAWasAtB = 0x000007f0, - StringNames__Enum_QCResAWasAtBNeg = 0x000007f1, - StringNames__Enum_QCResRip = 0x000007f2, - StringNames__Enum_QCResRipNeg = 0x000007f3, - StringNames__Enum_QCResLies = 0x000007f4, - StringNames__Enum_QCResLiesNeg = 0x000007f5, - StringNames__Enum_QCQstWhere = 0x000007f6, - StringNames__Enum_QCQstWho = 0x000007f7, - StringNames__Enum_QCQstWhoWasWith = 0x000007f8, - StringNames__Enum_QCQstWhatWasADoing = 0x000007f9, - StringNames__Enum_QCQstWhoFixedA = 0x000007fa, - StringNames__Enum_QCQstWhereWasA = 0x000007fb, - StringNames__Enum_QCQstBodyOrMeeting = 0x000007fc, - StringNames__Enum_QCStaASawB = 0x000007fd, - StringNames__Enum_QCStaAWasWithB = 0x000007fe, - StringNames__Enum_QCStaADidB = 0x000007ff, - StringNames__Enum_QCStaASelfReported = 0x00000800, - StringNames__Enum_QCStaDoubleKill = 0x00000801, - StringNames__Enum_QCStaWasSelfReport = 0x00000802, - StringNames__Enum_QCStaPleaseDoTasks = 0x00000803, - StringNames__Enum_QCStaBodyWasInA = 0x00000804, - StringNames__Enum_QCStaACalledMeeting = 0x00000805, - StringNames__Enum_QCLocation = 0x00000806, - StringNames__Enum_QCSystems = 0x00000807, - StringNames__Enum_QCCrew = 0x00000808, - StringNames__Enum_QCAccusation = 0x00000809, - StringNames__Enum_QCResponse = 0x0000080a, - StringNames__Enum_QCQuestion = 0x0000080b, - StringNames__Enum_QCStatements = 0x0000080c, - StringNames__Enum_ANY = 0x0000080d, - StringNames__Enum_ChatType = 0x0000080e, - StringNames__Enum_QuickChatOnly = 0x0000080f, - StringNames__Enum_FreeChatOnly = 0x00000810, - StringNames__Enum_FreeOrQuickChat = 0x00000811, - StringNames__Enum_DateOfBirth = 0x00000812, - StringNames__Enum_DateOfBirthEnter = 0x00000813, - StringNames__Enum_Month = 0x00000814, - StringNames__Enum_Day = 0x00000815, - StringNames__Enum_Year = 0x00000816, - StringNames__Enum_January = 0x00000817, - StringNames__Enum_February = 0x00000818, - StringNames__Enum_March = 0x00000819, - StringNames__Enum_April = 0x0000081a, - StringNames__Enum_May = 0x0000081b, - StringNames__Enum_June = 0x0000081c, - StringNames__Enum_July = 0x0000081d, - StringNames__Enum_August = 0x0000081e, - StringNames__Enum_September = 0x0000081f, - StringNames__Enum_October = 0x00000820, - StringNames__Enum_November = 0x00000821, - StringNames__Enum_December = 0x00000822, - StringNames__Enum_Submit = 0x00000823, - StringNames__Enum_QCMore = 0x00000824, - StringNames__Enum_Success = 0x00000825, - StringNames__Enum_Failed = 0x00000826, - StringNames__Enum_ErrorCreate = 0x00000827, - StringNames__Enum_SuccessCreate = 0x00000828, - StringNames__Enum_Close = 0x00000829, - StringNames__Enum_ErrorLogIn = 0x0000082a, - StringNames__Enum_SuccessLogIn = 0x0000082b, - StringNames__Enum_AccountInfo = 0x0000082c, - StringNames__Enum_Account = 0x0000082d, - StringNames__Enum_UserName = 0x0000082e, - StringNames__Enum_Height = 0x0000082f, - StringNames__Enum_Weight = 0x00000830, - StringNames__Enum_SignIn = 0x00000831, - StringNames__Enum_CreateAccount = 0x00000832, - StringNames__Enum_RequestPermission = 0x00000833, - StringNames__Enum_RandomizeName = 0x00000834, - StringNames__Enum_AccountLinking = 0x00000835, - StringNames__Enum_ChangeName = 0x00000836, - StringNames__Enum_LogOut = 0x00000837, - StringNames__Enum_GuardianWait = 0x00000838, - StringNames__Enum_EmailEdit = 0x00000839, - StringNames__Enum_EmailResend = 0x0000083a, - StringNames__Enum_GuestContinue = 0x0000083b, - StringNames__Enum_GuardianEmailSent = 0x0000083c, - StringNames__Enum_GuardianCheckEmail = 0x0000083d, - StringNames__Enum_EditName = 0x0000083e, - StringNames__Enum_Name = 0x0000083f, - StringNames__Enum_CreateAccountQuestion = 0x00000840, - StringNames__Enum_DoYouWantCreate = 0x00000841, - StringNames__Enum_PermissionRequired = 0x00000842, - StringNames__Enum_NeedPermissionText = 0x00000843, - StringNames__Enum_GuardianEmailTitle = 0x00000844, - StringNames__Enum_Send = 0x00000845, - StringNames__Enum_NewEmail = 0x00000846, - StringNames__Enum_ConfirmEmail = 0x00000847, - StringNames__Enum_EditEmail = 0x00000848, - StringNames__Enum_Loading = 0x00000849, - StringNames__Enum_Welcome = 0x0000084a, - StringNames__Enum_DLLNotFoundAccountError = 0x0000084b, - StringNames__Enum_ContinueOffline = 0x0000084c, - StringNames__Enum_CreateTryAgain = 0x0000084d, - StringNames__Enum_WantToLogIn = 0x0000084e, - StringNames__Enum_GoOffline = 0x0000084f, - StringNames__Enum_PlayAsGuest = 0x00000850, - StringNames__Enum_LogInTitle = 0x00000851, - StringNames__Enum_LogInInfoText = 0x00000852, - StringNames__Enum_ShowAccountSupportID5 = 0x00000853, - StringNames__Enum_ShowAccountSupportID4 = 0x00000854, - StringNames__Enum_ShowAccountSupportID3 = 0x00000855, - StringNames__Enum_ShowAccountSupportID2 = 0x00000856, - StringNames__Enum_ShowAccountSupportID1 = 0x00000857, - StringNames__Enum_YouAreNotOnline = 0x00000858, - StringNames__Enum_SaveGameOutOfSpaceMessage = 0x00000859, - StringNames__Enum_SaveGameOutOfSpaceConfirm = 0x0000085a, - StringNames__Enum_SaveGameOutOfSpaceCancel = 0x0000085b, - StringNames__Enum_EngagementScreen = 0x0000085c, - StringNames__Enum_EngagementScreenSignIn = 0x0000085d, - StringNames__Enum_FollowUs = 0x0000085e, - StringNames__Enum_ColorMaroon = 0x0000085f, - StringNames__Enum_ColorRose = 0x00000860, - StringNames__Enum_ColorBanana = 0x00000861, - StringNames__Enum_ColorGray = 0x00000862, - StringNames__Enum_ColorTan = 0x00000863, - StringNames__Enum_ColorSunset = 0x00000864, - StringNames__Enum_QuickChatInstructionsStart = 0x00000865, - StringNames__Enum_QuickChatInstructionsChild = 0x00000866, - StringNames__Enum_QuickChatInstructionsGuest = 0x00000867, - StringNames__Enum_QuickChatInstructionsFull = 0x00000868, - StringNames__Enum_SwitchEShopBrowseAll = 0x00000869, - StringNames__Enum_ColorCoral = 0x0000086a, - StringNames__Enum_GuardianEmail = 0x0000086b, - StringNames__Enum_LocalButton = 0x0000086c, - StringNames__Enum_OnlineButton = 0x0000086d, - StringNames__Enum_HowToPlayButton = 0x0000086e, - StringNames__Enum_FreePlayButton = 0x0000086f, - StringNames__Enum_PublicHeader = 0x00000870, - StringNames__Enum_PrivateHeader = 0x00000871, - StringNames__Enum_HostHeader = 0x00000872, - StringNames__Enum_EmergencyMeeting = 0x00000873, - StringNames__Enum_BodyReported = 0x00000874, - StringNames__Enum_PlayAgain = 0x00000875, - StringNames__Enum_QuitLabel = 0x00000876, - StringNames__Enum_DownloadLabel = 0x00000877, - StringNames__Enum_UploadLabel = 0x00000878, - StringNames__Enum_TimeRemaining = 0x00000879, - StringNames__Enum_AnnouncementLabel = 0x0000087a, - StringNames__Enum_StartLabel = 0x0000087b, - StringNames__Enum_UseLabel = 0x0000087c, - StringNames__Enum_KillLabel = 0x0000087d, - StringNames__Enum_SabotageLabel = 0x0000087e, - StringNames__Enum_VentLabel = 0x0000087f, - StringNames__Enum_OptionsLabel = 0x00000880, - StringNames__Enum_ReportLabel = 0x00000881, - StringNames__Enum_CO2Label = 0x00000882, - StringNames__Enum_NutriLabel = 0x00000883, - StringNames__Enum_RADLabel = 0x00000884, - StringNames__Enum_WaterLabel = 0x00000885, - StringNames__Enum_DiscussLabel = 0x00000886, - StringNames__Enum_DeadLabel = 0x00000887, - StringNames__Enum_SkippedVoting = 0x00000888, - StringNames__Enum_ProceedLabel = 0x00000889, - StringNames__Enum_HolidayHatLabel = 0x0000088a, - StringNames__Enum_HatLabel = 0x0000088b, - StringNames__Enum_PetLabel = 0x0000088c, - StringNames__Enum_SkinLabel = 0x0000088d, - StringNames__Enum_DoorlogLabel = 0x0000088e, - StringNames__Enum_VitalsLabel = 0x0000088f, - StringNames__Enum_InsufficientStorageError = 0x00000890, - StringNames__Enum_NetworkError = 0x00000891, - StringNames__Enum_OtherDownloadError = 0x00000892, - StringNames__Enum_DownloadingLabel = 0x00000893, - StringNames__Enum_DownloadSizeLabel = 0x00000894, - StringNames__Enum_SkipVoteLabel = 0x00000895, - StringNames__Enum_LogInInfoTextSwitch = 0x00000896, - StringNames__Enum_WeatherDataDownload = 0x00000897, - StringNames__Enum_BeginLabel = 0x00000898, - StringNames__Enum_QuietLabel = 0x00000899, - StringNames__Enum_LogLabel = 0x0000089a, - StringNames__Enum_ReadingLabel = 0x0000089b, - StringNames__Enum_UploadingLabel = 0x0000089c, - StringNames__Enum_ConnectionLabel = 0x0000089d, - StringNames__Enum_GoodLabel = 0x0000089e, - StringNames__Enum_PoorLabel = 0x0000089f, - StringNames__Enum_NoneLabel = 0x000008a0, - StringNames__Enum_ProgressLabel = 0x000008a1, - StringNames__Enum_PerfectLabel = 0x000008a2, - StringNames__Enum_NoDeadBodiesFound = 0x000008a3, - StringNames__Enum_AirshipBundle = 0x000008a4, - StringNames__Enum_PolusBundle = 0x000008a5, - StringNames__Enum_PolusSkinBundle = 0x000008a6, - StringNames__Enum_MiraBundle = 0x000008a7, - StringNames__Enum_MiraSkinBundle = 0x000008a8, - StringNames__Enum_PetAlien2 = 0x000008a9, - StringNames__Enum_PetAlien1 = 0x000008aa, - StringNames__Enum_PetAnimal = 0x000008ab, - StringNames__Enum_PetCrewmate = 0x000008ac, - StringNames__Enum_PetStickmin = 0x000008ad, - StringNames__Enum_PrisonerSkin = 0x000008ae, - StringNames__Enum_Cyborg_RHM = 0x000008af, - StringNames__Enum_CCC_Officer = 0x000008b0, - StringNames__Enum_VentCleaning = 0x000008b1, - StringNames__Enum_CleanUp = 0x000008b2, - StringNames__Enum_ControllerDisconnectedMessage = 0x000008b3, - StringNames__Enum_TermsOfUseTitle = 0x000008b4, - StringNames__Enum_PPAndToUTitle = 0x000008b5, - StringNames__Enum_ComePlayDiscord = 0x000008b6, - StringNames__Enum_SupportEmail = 0x000008b7, - StringNames__Enum_SupportIDLabel = 0x000008b8, - StringNames__Enum_pk05_davehat = 0x000008b9, - StringNames__Enum_pk05_Ellie = 0x000008ba, - StringNames__Enum_pk05_Svenhat = 0x000008bb, - StringNames__Enum_pk05_Burthat = 0x000008bc, - StringNames__Enum_pk05_Ellryhat = 0x000008bd, - StringNames__Enum_pk05_monocles = 0x000008be, - StringNames__Enum_pk05_cheesetoppat = 0x000008bf, - StringNames__Enum_pk05_Macbethhat = 0x000008c0, - StringNames__Enum_pk05_HenryToppat = 0x000008c1, - StringNames__Enum_pk05_EllieToppat = 0x000008c2, - StringNames__Enum_pk05_GeoffreyToppat = 0x000008c3, - StringNames__Enum_InviteFriends = 0x000008c4, - StringNames__Enum_Continue = 0x000008c5, - StringNames__Enum_GameComplete = 0x000008c6, - StringNames__Enum_XpGained = 0x000008c7, - StringNames__Enum_PodsEarned = 0x000008c8, - StringNames__Enum_CosmicubeNodeUnlocked = 0x000008c9, - StringNames__Enum_LevelShorthand = 0x000008ca, - StringNames__Enum_PrestigeLevelShorthand = 0x000008cb, - StringNames__Enum_MaxLevel = 0x000008cc, - StringNames__Enum_EquipLabel = 0x000008cd, - StringNames__Enum_XpGainedValue = 0x000008ce, - StringNames__Enum_PSNErrorSessionFailed = 0x000008cf, - StringNames__Enum_PSNErrorSessionJoinFailed = 0x000008d0, - StringNames__Enum_PSNErrorSessionGetInfoFailed = 0x000008d1, - StringNames__Enum_PSNErrorPSNConnectionLost = 0x000008d2, - StringNames__Enum_PSNErrorUserSignedOut = 0x000008d3, - StringNames__Enum_CrossPlayTitle = 0x000008d4, - StringNames__Enum_CrossPlayAllPlatforms = 0x000008d5, - StringNames__Enum_CrossPlaySamePlatform = 0x000008d6, - StringNames__Enum_QuickChat = 0x000008d7, - StringNames__Enum_TimeOutText = 0x000008d8, - StringNames__Enum_RetryText = 0x000008d9, - StringNames__Enum_PlayerLevel = 0x000008da, - StringNames__Enum_PlayerXp = 0x000008db, - StringNames__Enum_PlayerLevelExtremeShorthand = 0x000008dc, - StringNames__Enum_Max = 0x000008dd, - StringNames__Enum_Wardrobe = 0x000008de, - StringNames__Enum_CopiedText = 0x000008df, - StringNames__Enum_LinkAccount = 0x000008e0, - StringNames__Enum_CreateNewAccount = 0x000008e1, - StringNames__Enum_LinkExistingAccount = 0x000008e2, - StringNames__Enum_LinkAccountExplanation = 0x000008e3, - StringNames__Enum_LinkAccountCode = 0x000008e4, - StringNames__Enum_ErrorLink = 0x000008e5, - StringNames__Enum_UnlinkAccount = 0x000008e6, - StringNames__Enum_ConfirmUnlinkAccount = 0x000008e7, - StringNames__Enum_UnlinkAccountExplain = 0x000008e8, - StringNames__Enum_UnlinkAccountExplainConfirm = 0x000008e9, - StringNames__Enum_UnlinkError = 0x000008ea, - StringNames__Enum_UnlinkSuccess = 0x000008eb, - StringNames__Enum_ConfirmLinkExistingAccount = 0x000008ec, - StringNames__Enum_LinkExistingAccountExplain = 0x000008ed, - StringNames__Enum_LinkExistingAccountExplainConfirm = 0x000008ee, - StringNames__Enum_ResetAccount = 0x000008ef, - StringNames__Enum_CrossPlayEnabledWarning = 0x000008f0, - StringNames__Enum_StoreComingSoon = 0x000008f1, - StringNames__Enum_Locked = 0x000008f2, - StringNames__Enum_FailPurchase = 0x000008f3, - StringNames__Enum_FailPurchaseUnknown = 0x000008f4, - StringNames__Enum_FailPurchaseAlreadyOwn = 0x000008f5, - StringNames__Enum_FailPurchaseCurrency = 0x000008f6, - StringNames__Enum_FailPurchaseCubeOwn = 0x000008f7, - StringNames__Enum_ErrorPlatformParentalControlsBlock = 0x000008f8, - StringNames__Enum_Crewmates = 0x000008f9, - StringNames__Enum_Colors = 0x000008fa, - StringNames__Enum_Active = 0x000008fb, - StringNames__Enum_Equipped = 0x000008fc, - StringNames__Enum_QCLocationAirship = 0x000008fd, - StringNames__Enum_XboxShopBrowseAll = 0x000008fe, - StringNames__Enum_PSShopBrowseAll = 0x000008ff, - StringNames__Enum_SteamNotInitialized = 0x00000900, - StringNames__Enum_LoggedInErrorStarPurchase = 0x00000901, - StringNames__Enum_StarDisclaimer = 0x00000902, - StringNames__Enum_HowToPlayText_Consoles = 0x00000903, - StringNames__Enum_ErrorQuickChatMode = 0x00000904, - StringNames__Enum_ErrorLobbyUsersBlocked = 0x00000905, - StringNames__Enum_ItchNoStars = 0x00000906, - StringNames__Enum_CheckingPurchasesLabel = 0x00000907, - StringNames__Enum_RedeemPurchasedItemsTitle = 0x00000908, - StringNames__Enum_RedeemPurcahsedItemsExplain = 0x00000909, - StringNames__Enum_RedeemProceed = 0x0000090a, - StringNames__Enum_RedeemNotYet = 0x0000090b, - StringNames__Enum_AccountIDDisplay = 0x0000090c, - StringNames__Enum_RedeemNever = 0x0000090d, - StringNames__Enum_AvailableFor = 0x0000090e, - StringNames__Enum_GuestProgressionWarning = 0x0000090f, - StringNames__Enum_ErrorSelfPlatformLock = 0x00000910, - StringNames__Enum_ErrorCrossPlat = 0x00000911, - StringNames__Enum_SettingsStreamerMode = 0x00000912, - StringNames__Enum_RoomCodeInfo = 0x00000913, - StringNames__Enum_AbbreviatedDay = 0x00000914, - StringNames__Enum_AbbreviatedHour = 0x00000915, - StringNames__Enum_AbbreviatedMinute = 0x00000916, - StringNames__Enum_AbbreviatedSecond = 0x00000917, - StringNames__Enum_StreamingTwitch = 0x00000918, - StringNames__Enum_MaxVentUses = 0x00000a8c, - StringNames__Enum_MaxTimeInVent = 0x00000a8d, - StringNames__Enum_MinCrewmatesForVitals = 0x00000a8e, - StringNames__Enum_EscapeTime = 0x00000a8f, - StringNames__Enum_AllTasksComplete = 0x00000a90, - StringNames__Enum_EscapePrompt = 0x00000a91, - StringNames__Enum_CrewmateFlashlightSize = 0x00000a92, - StringNames__Enum_ImpostorFlashlightSize = 0x00000a93, - StringNames__Enum_CrewmateLeadTime = 0x00000a94, - StringNames__Enum_CrewmadeHideBlurb = 0x00000a95, - StringNames__Enum_ImpostorKillBlurb = 0x00000a96, - StringNames__Enum_HideCountdown = 0x00000a97, - StringNames__Enum_ScaryMusicDistance = 0x00000a98, - StringNames__Enum_ShortTaskTimeValue = 0x00000a99, - StringNames__Enum_LongTaskTimeValue = 0x00000a9a, - StringNames__Enum_CommonTaskTimeValue = 0x00000a9b, - StringNames__Enum_UseFlashlight = 0x00000a9c, - StringNames__Enum_FinalEscapeTime = 0x00000a9d, - StringNames__Enum_VeryScaryMusicDistance = 0x00000a9e, - StringNames__Enum_SeekerFinalSpeed = 0x00000a9f, - StringNames__Enum_SeekerFinalVents = 0x00000aa0, - StringNames__Enum_SeekerFinalMap = 0x00000aa1, - StringNames__Enum_CrewmateVentCooldown = 0x00000aa2, - StringNames__Enum_SeekerPings = 0x00000aa3, - StringNames__Enum_MaxPingTime = 0x00000aa4, - StringNames__Enum_ShowPingTime = 0x00000aa5, - StringNames__Enum_MinPingTime = 0x00000aa6, - StringNames__Enum_ShowCrewmateNames = 0x00000aa7, - StringNames__Enum_ShowImpostorNames = 0x00000aa8, - StringNames__Enum_HideActionButton = 0x00000aa9, - StringNames__Enum_RuleOneCrewmates = 0x00000aaa, - StringNames__Enum_RuleTwoCrewmates = 0x00000aab, - StringNames__Enum_RuleThreeCrewmates = 0x00000aac, - StringNames__Enum_RuleOneImpostor = 0x00000aad, - StringNames__Enum_RuleTwoImpostor = 0x00000aae, - StringNames__Enum_RuleThreeImpostor = 0x00000aaf, - StringNames__Enum_RuleOneCrewmatesTitle = 0x00000ab0, - StringNames__Enum_RuleTwoCrewmatesTitle = 0x00000ab1, - StringNames__Enum_RuleThreeCrewmatesTitle = 0x00000ab2, - StringNames__Enum_RuleOneImpostorTitle = 0x00000ab3, - StringNames__Enum_RuleTwoImpostorTitle = 0x00000ab4, - StringNames__Enum_RoundRobin = 0x00000ab5, - StringNames__Enum_OptionUnavailablePublicLobby = 0x00000ab6, - StringNames__Enum_StatsHidenSeekGamesCrewmateSurvived = 0x00000ab7, - StringNames__Enum_StatsHidenSeekTimesVented = 0x00000ab8, - StringNames__Enum_StatsTimesPettedPet = 0x00000ab9, - StringNames__Enum_StatsImpostorKills_HideAndSeek = 0x00000aba, - StringNames__Enum_StatsFastestCrewmateWin_HideAndSeek = 0x00000abb, - StringNames__Enum_StatsFastestImpostorWin_HideAndSeek = 0x00000abc, - StringNames__Enum_StatsHideAndSeekImpostorVictory = 0x00000abd, - StringNames__Enum_StatsHideAndSeekCrewmateVictory = 0x00000abe, - StringNames__Enum_AmongUsFriends = 0x00000af0, - StringNames__Enum_FriendsGuestWarning = 0x00000af1, - StringNames__Enum_PlatformFriends = 0x00000af2, - StringNames__Enum_BlockedPlayers = 0x00000af3, - StringNames__Enum_RecentPlayers = 0x00000af4, - StringNames__Enum_LobbyLabel = 0x00000af5, - StringNames__Enum_FriendCodeExplanation = 0x00000af6, - StringNames__Enum_FriendCodeSuccess = 0x00000af7, - StringNames__Enum_FriendRequestReceived = 0x00000af8, - StringNames__Enum_FriendRequestSent = 0x00000af9, - StringNames__Enum_GameLobbyInviteSent = 0x00000afa, - StringNames__Enum_GameLobbyInviteReceived = 0x00000afb, - StringNames__Enum_BlockPlayerConfirm = 0x00000afc, - StringNames__Enum_RemoveFriendConfirm = 0x00000afd, - StringNames__Enum_InviteToLobbyConfirm = 0x00000afe, - StringNames__Enum_FriendCodeLabel = 0x00000aff, - StringNames__Enum_FriendCodeCreationTitle = 0x00000b00, - StringNames__Enum_FriendRequestSentFailed = 0x00000b01, - StringNames__Enum_ErrorBadUsername = 0x00000b02, - StringNames__Enum_ErrorUserNotFound = 0x00000b03, - StringNames__Enum_ErrorThisIsYou = 0x00000b04, - StringNames__Enum_ErrorFriendRequestExists = 0x00000b05, - StringNames__Enum_ErrorAlreadyFriends = 0x00000b06, - StringNames__Enum_GameLobbyInviteSentFailed = 0x00000b07, - StringNames__Enum_BlockedPlayerFailed = 0x00000b08, - StringNames__Enum_BlockedPlayer = 0x00000b09, - StringNames__Enum_AlreadyBlocked = 0x00000b0a, - StringNames__Enum_FriendList = 0x00000b0b, - StringNames__Enum_NoNewRequests = 0x00000b0c, - StringNames__Enum_AddFriendPrompt = 0x00000b0d, - StringNames__Enum_NewRequests = 0x00000b0e, - StringNames__Enum_Requests = 0x00000b0f, - StringNames__Enum_AddFriend = 0x00000b10, - StringNames__Enum_StreamWarning = 0x00000b11, - StringNames__Enum_FriendsListPermissionsWarning = 0x00000b12, - StringNames__Enum_AddFriendConfirm = 0x00000b13, - StringNames__Enum_UnfriendConfirm = 0x00000b14, - StringNames__Enum_UnblockConfirm = 0x00000b15, - StringNames__Enum_SettingsEnableFriendInvites = 0x00000b16, - StringNames__Enum_ErrorCrossPlatformCommunication = 0x00000b17, - StringNames__Enum_ErrorPlatformFriends = 0x00000b18, - StringNames__Enum_ErrorPlayerBlockedYou = 0x00000b19, - StringNames__Enum_ErrorRecipientMaxFriendRequests = 0x00000b1a, - StringNames__Enum_ErrorSenderMaxFriendRequests = 0x00000b1b, - StringNames__Enum_ErrorMaxFriends = 0x00000b1c, - StringNames__Enum_ErrorRecipientMaxFriends = 0x00000b1d, - StringNames__Enum_ParentPortalButton = 0x00000b1e, - StringNames__Enum_FriendsListEmailSent = 0x00000b1f, - StringNames__Enum_AndroidAssetBundleWarning = 0x00000b20, - StringNames__Enum_FreeChatLinkWarning = 0x00000b21, - StringNames__Enum_FriendListUnavailable = 0x00000b22, - StringNames__Enum_SignInIssueTitle = 0x00000b23, - StringNames__Enum_SignInIssueText = 0x00000b24, - StringNames__Enum_Ghost = 0x00000b25, - StringNames__Enum_CurrentlyHaunting = 0x00000b26, - StringNames__Enum_RestorePurchases = 0x00000b27, - StringNames__Enum_QCAccIsRole = 0x00000bb8, - StringNames__Enum_QCAccIsRoleNeg = 0x00000bb9, - StringNames__Enum_QCAccShapeshited = 0x00000bba, - StringNames__Enum_QCStaShapeshifterSkin = 0x00000bbb, - StringNames__Enum_QCResIsBeingFramed = 0x00000bbc, - StringNames__Enum_QCResIsRoleMaybe = 0x00000bbd, - StringNames__Enum_QCResCloseTo = 0x00000bbe, - StringNames__Enum_QCResProtected = 0x00000bbf, - StringNames__Enum_QCRoles = 0x00000bc0, - StringNames__Enum_ErrorFailedToCreateGame = 0x00000bc1, - StringNames__Enum_ErrorFailedToJoinCreatedGame = 0x00000bc2, - StringNames__Enum_ErrorDisconnectBeforeJoining = 0x00000bc3, - StringNames__Enum_ErrorDisconnectPacket = 0x00000bc4, - StringNames__Enum_PSEULA_SIEA = 0x00000bc5, - StringNames__Enum_PSEULA_SIEE = 0x00000bc6, - StringNames__Enum_ShowAccountID = 0x00000bc7, - StringNames__Enum_HideAccountID = 0x00000bc8, - StringNames__Enum_HiddenAccountID = 0x00000bc9, - StringNames__Enum_ErrorLobbyFailedGettingBlockedUsers = 0x00000bca, - StringNames__Enum_SteamOverlayDisabled = 0x00000bcb, - StringNames__Enum_QCOnlyInfo = 0x00000bcc, - StringNames__Enum_FreeChatInfo = 0x00000bcd, - StringNames__Enum_FreeChatWarning = 0x00000bce, - StringNames__Enum_TryAgain = 0x00000bcf, - StringNames__Enum_TempDisabled = 0x00000bd0, - StringNames__Enum_TempDisabledLinkExplain = 0x00000bd1, - StringNames__Enum_RedeemPopup = 0x00000bd2, - StringNames__Enum_RedeemButton = 0x00000bd3, - StringNames__Enum_Decontamination3 = 0x00000bd4, - StringNames__Enum_MergeGuestAccountText = 0x00000bd5, - StringNames__Enum_MergeGuestAccountTitle = 0x00000bd6, - StringNames__Enum_ErrorCommunications = 0x00000bd7, - StringNames__Enum_ManageAccountTitle = 0x00000bd8, - StringNames__Enum_ManageAccountText = 0x00000bd9, - StringNames__Enum_Email = 0x00000bda, - StringNames__Enum_BugReportPopUpSubmittedText = 0x00000bdb, - StringNames__Enum_BugReportPopUpCategoryLabel = 0x00000bdc, - StringNames__Enum_BugReportPopUpDescriptionLabel = 0x00000bdd, - StringNames__Enum_BugReportPopUpTitle = 0x00000bde, - StringNames__Enum_BugReportCategoryServerIssues = 0x00000bdf, - StringNames__Enum_BugReportCategoryGameplayIssue = 0x00000be0, - StringNames__Enum_BugReportCategoryAccountManagement = 0x00000be1, - StringNames__Enum_BugReportCategoryBilling = 0x00000be2, - StringNames__Enum_BugReportCategoryGeneral = 0x00000be3, - StringNames__Enum_BugReportIssueButton = 0x00000be4, - StringNames__Enum_BugReportPopUpSubmissionFailedText = 0x00000be5, - StringNames__Enum_BugReportPopUpAttachScreenshotLabel = 0x00000be6, - StringNames__Enum_QCQstWhy = 0x00000bea, - StringNames__Enum_QCTagAccuse = 0x00000beb, - StringNames__Enum_QCTagDefend = 0x00000bec, - StringNames__Enum_QCTagQuestion = 0x00000bed, - StringNames__Enum_QCTagLobby = 0x00000bee, - StringNames__Enum_QCTagImpostor = 0x00000bef, - StringNames__Enum_QCTagMeeting = 0x00000bf0, - StringNames__Enum_QCTagHiding = 0x00000bf1, - StringNames__Enum_QCTagFlashlight = 0x00000bf2, - StringNames__Enum_QCTagRoles = 0x00000bf3, - StringNames__Enum_QCInputRole = 0x00000bf4, - StringNames__Enum_QCTagTasks = 0x00000bf5, - StringNames__Enum_QCInputTask = 0x00000bf6, - StringNames__Enum_QCTagSabotages = 0x00000bf7, - StringNames__Enum_QCInputSabotages = 0x00000bf8, - StringNames__Enum_QCTagRemarks = 0x00000bf9, - StringNames__Enum_QCInputRemark = 0x00000bfa, - StringNames__Enum_QCInputAccusation = 0x00000bfb, - StringNames__Enum_QCInputDefense = 0x00000bfc, - StringNames__Enum_QCTagQuestionSingular = 0x00000bfd, - StringNames__Enum_QCResAgree = 0x00000bfe, - StringNames__Enum_QCResDisagree = 0x00000bff, - StringNames__Enum_QCResNice = 0x00000c00, - StringNames__Enum_QCResUhOh = 0x00000c01, - StringNames__Enum_QCResOops = 0x00000c02, - StringNames__Enum_QCResExclamationMarks = 0x00000c03, - StringNames__Enum_QCResQuestionMarks = 0x00000c04, - StringNames__Enum_QCBuildingPlaceholder = 0x00000c05, - StringNames__Enum_QCTagQuickRemarks = 0x00000c06, - StringNames__Enum_Undo = 0x00000c17, - StringNames__Enum_Clear = 0x00000c18, - StringNames__Enum_DivertPower = 0x00000c19, - StringNames__Enum_ResetReactorName = 0x00000c1a, - StringNames__Enum_RestoreOxyName = 0x00000c1b, - StringNames__Enum_QCAccADidntReport_QCCrewMe = 0x00000c1c, - StringNames__Enum_QCStaACalledMeeting_QCCrewMe = 0x00000c1d, - StringNames__Enum_QCAccAIsLyingNeg_QCCrewMe = 0x00000c1e, - StringNames__Enum_QCResADid_QCCrewMe = 0x00000c1f, - StringNames__Enum_QCResADidNeg_QCCrewMe = 0x00000c20, - StringNames__Enum_QCResAWas_QCCrewMe = 0x00000c21, - StringNames__Enum_QCResAWasNeg_QCCrewMe = 0x00000c22, - StringNames__Enum_QCResIsBeingFramed_QCCrewMe = 0x00000c23, - StringNames__Enum_QCAccAKilledBNeg_QCCrewMe_ANY = 0x00000c24, - StringNames__Enum_QCStaAWasWithB_QCCrewMe_ANY = 0x00000c25, - StringNames__Enum_QCStaAWasWithB_ANY_QCCrewMe = 0x00000c26, - StringNames__Enum_QCResCloseTo_QCCrewMe_ANY = 0x00000c27, - StringNames__Enum_QCAccAWasChasingB_QCCrewMe_ANY = 0x00000c28, - StringNames__Enum_QCAccAWasChasingBNeg_QCCrewMe_ANY = 0x00000c29, - StringNames__Enum_QCAccAWasChasingB_ANY_QCCrewMe = 0x00000c2a, - StringNames__Enum_QCAccAWasChasingBNeg_ANY_QCCrewMe = 0x00000c2b, - StringNames__Enum_QCStaASawB_QCCrewMe_ANY = 0x00000c2c, - StringNames__Enum_QCAccASawBVent_QCCrewMe_ANY = 0x00000c2d, - StringNames__Enum_QCAccASawBVentNeg_QCCrewMe_ANY = 0x00000c2e, - StringNames__Enum_QCAccASawBVentNeg_ANY_QCCrewMe = 0x00000c2f, - StringNames__Enum_QCResAWasAtB_QCCrewMe_ANY = 0x00000c30, - StringNames__Enum_QCResAWasAtBNeg_QCCrewMe_ANY = 0x00000c31, - StringNames__Enum_QCStaADidB_QCCrewMe_ANY = 0x00000c32, - StringNames__Enum_QCAccIsRole_QCCrewMe_ANY = 0x00000c33, - StringNames__Enum_QCAccIsRoleNeg_QCCrewMe_ANY = 0x00000c34, - StringNames__Enum_QCResProtected_ANY_QCCrewMe = 0x00000c35, - StringNames__Enum_QCCrewSomeone = 0x00000c36, - StringNames__Enum_QCResUrWelcome = 0x00000c37, - StringNames__Enum_QCResNp = 0x00000c38, - StringNames__Enum_QCResYikes = 0x00000c39, - StringNames__Enum_QCResRipCrew = 0x00000c3a, - StringNames__Enum_QCResYeetCrew = 0x00000c3b, - StringNames__Enum_QCSelfWasOnVitals = 0x00000c3c, - StringNames__Enum_QCSawDeadCrewOnVitals = 0x00000c3d, - StringNames__Enum_QCSelfSawTwoCrew = 0x00000c3e, - StringNames__Enum_QCCrewShapeshifted = 0x00000c3f, - StringNames__Enum_QCSelfSawCrewDoVisualTask = 0x00000c40, - StringNames__Enum_QCSelfWasOnDoorlogs = 0x00000c41, - StringNames__Enum_QCSelfWasOnAdmin = 0x00000c42, - StringNames__Enum_QCSelfAmVotingCrew = 0x00000c43, - StringNames__Enum_QCCrewWasPretendingTasks = 0x00000c44, - StringNames__Enum_QCCrewWasPretendingSabotage = 0x00000c45, - StringNames__Enum_QCLobbyMoreImpostors = 0x00000c46, - StringNames__Enum_QCLobbyLessImpostors = 0x00000c47, - StringNames__Enum_QCLobbyConfirmEjects = 0x00000c48, - StringNames__Enum_QCLobbyMoreEmergencyMeetings = 0x00000c49, - StringNames__Enum_QCLobbyLessEmergencyMeetings = 0x00000c4a, - StringNames__Enum_QCLobbyAnonymousVotes = 0x00000c4b, - StringNames__Enum_QCLobbyMoreEmergencyCooldownTime = 0x00000c4c, - StringNames__Enum_QCLobbyLessEmergencyCooldownTime = 0x00000c4d, - StringNames__Enum_QCLobbyMoreDiscussionTime = 0x00000c4e, - StringNames__Enum_QCLobbyLessDiscussionTime = 0x00000c4f, - StringNames__Enum_QCLobbyMoreVotingTime = 0x00000c50, - StringNames__Enum_QCLobbyLessVotingTime = 0x00000c51, - StringNames__Enum_QCLobbyFasterPlayerSpeed = 0x00000c52, - StringNames__Enum_QCLobbySlowerPlayerSpeed = 0x00000c53, - StringNames__Enum_QCLobbyTaskBarUpdates = 0x00000c54, - StringNames__Enum_QCLobbyVisualTasks = 0x00000c55, - StringNames__Enum_QCLobbyMoreCrewmateVision = 0x00000c56, - StringNames__Enum_QCLobbyLessCrewmateVision = 0x00000c57, - StringNames__Enum_QCLobbyMoreImpostorVision = 0x00000c58, - StringNames__Enum_QCLobbyLessImpostorVision = 0x00000c59, - StringNames__Enum_QCLobbyMoreKillCooldownTime = 0x00000c5a, - StringNames__Enum_QCLobbyLessKillCooldownTime = 0x00000c5b, - StringNames__Enum_QCLobbyLongerKillDistance = 0x00000c5c, - StringNames__Enum_QCLobbyShorderKillDistance = 0x00000c5d, - StringNames__Enum_QCLobbyMoreCommonTasks = 0x00000c5e, - StringNames__Enum_QCLobbyLessCommonTasks = 0x00000c5f, - StringNames__Enum_QCLobbyMoreLongTasks = 0x00000c60, - StringNames__Enum_QCLobbyLessLongTasks = 0x00000c61, - StringNames__Enum_QCLobbyMoreShortTasks = 0x00000c62, - StringNames__Enum_QCLobbyLessShortTasks = 0x00000c63, - StringNames__Enum_QCLobbyRoleScientists = 0x00000c64, - StringNames__Enum_QCLobbyRoleGuardianAngels = 0x00000c65, - StringNames__Enum_QCLobbyRoleEngineers = 0x00000c66, - StringNames__Enum_QCLobbyRoleShapeshifters = 0x00000c67, - StringNames__Enum_QCLobbyRoleNone = 0x00000c68, - StringNames__Enum_QCResLess = 0x00000c69, - StringNames__Enum_QCResMore = 0x00000c6a, - StringNames__Enum_QCResNone = 0x00000c6b, - StringNames__Enum_QCLobbyHNSMoreHideTime = 0x00000c6c, - StringNames__Enum_QCLobbyHNSLessHideTime = 0x00000c6d, - StringNames__Enum_QCLobbyHNSMoreFinalHideTime = 0x00000c6e, - StringNames__Enum_QCLobbyHNSLessFinalHideTime = 0x00000c6f, - StringNames__Enum_QCLobbyHNSFlashlightMode = 0x00000c70, - StringNames__Enum_QCLobbyHNSMoreCrewmateFlashlightSize = 0x00000c71, - StringNames__Enum_QCLobbyHNSLessCrewmateFlashlightSize = 0x00000c72, - StringNames__Enum_QCLobbyHNSMoreImpostorFlashlightSize = 0x00000c73, - StringNames__Enum_QCLobbyHNSLessImpostorFlashlightSize = 0x00000c74, - StringNames__Enum_QCLobbyHNSShowNames = 0x00000c75, - StringNames__Enum_QCLobbyHNSMoreVents = 0x00000c76, - StringNames__Enum_QCLobbyHNSLessVents = 0x00000c77, - StringNames__Enum_QCLobbyHNSMoreTimeInVent = 0x00000c78, - StringNames__Enum_QCLobbyHNSLessTimeInVent = 0x00000c79, - StringNames__Enum_QCLobbyHNSMoreFinalHideImpostorSpeed = 0x00000c7a, - StringNames__Enum_QCLobbyHNSLessFinalHideImpostorSpeed = 0x00000c7b, - StringNames__Enum_QCLobbyHNSFinalHideSeekMap = 0x00000c7c, - StringNames__Enum_QCLobbyHNSFinalHidePings = 0x00000c7d, - StringNames__Enum_QCLobbyHNSMorePingInterval = 0x00000c7e, - StringNames__Enum_QCLobbyHNSLessPingInterval = 0x00000c7f, - StringNames__Enum_SettingsColorblind = 0x00000c80, - StringNames__Enum_SettingsHelp = 0x00000c81, - StringNames__Enum_SecLogEntryColorblind = 0x00000c82, - StringNames__Enum_DeleteAccount = 0x00000c83, - StringNames__Enum_DoNotDeleteAccount = 0x00000c84, - StringNames__Enum_AccountDeleteHelp = 0x00000c85, - StringNames__Enum_AccountUnDeleteHelp = 0x00000c86, - StringNames__Enum_ConfirmDelete = 0x00000c87, - StringNames__Enum_ConfirmDeleteAccounts = 0x00000c88, - StringNames__Enum_ConfirmDeleteAccountsEmpty = 0x00000c89, - StringNames__Enum_AccountRequestDelete = 0x00000c8a, - StringNames__Enum_HasBeenKilled = 0x00000c8b, - StringNames__Enum_ScrollList = 0x00000ce4, - StringNames__Enum_ScrollNews = 0x00000ce5, - StringNames__Enum_AmongUsAnnouncements = 0x00000ce6, - StringNames__Enum_AnnouncementErrorSubtitle = 0x00000ce7, - StringNames__Enum_AnnouncementErrorText = 0x00000ce8, - StringNames__Enum_ReadMoreLabel = 0x00000ce9, - StringNames__Enum_ReturnToList = 0x00000cea, - StringNames__Enum_NavigateLinks = 0x00000ceb, - StringNames__Enum_AgeVerificationTitle = 0x00000cec, - StringNames__Enum_AgeVerificationInfoTitle = 0x00000ced, - StringNames__Enum_AgeVerificationInfo = 0x00000cee, - StringNames__Enum_AgeVerificationMoreInfo = 0x00000cef, - StringNames__Enum_EditLabel = 0x00000cf0, - StringNames__Enum_VerifyAgeText = 0x00000cf1, - StringNames__Enum_PlayLabel = 0x00000cf2, - StringNames__Enum_SettingsLabel = 0x00000cf3, - StringNames__Enum_NewsLabel = 0x00000cf4, - StringNames__Enum_AccountLabel = 0x00000cf5, - StringNames__Enum_CreditsLabel = 0x00000cf6, - StringNames__Enum_ShopLabel = 0x00000cf7, - StringNames__Enum_InventoryLabel = 0x00000cf8, - StringNames__Enum_StatsLabel = 0x00000cf9, - StringNames__Enum_FriendsLabel = 0x00000cfa, - StringNames__Enum_GameType = 0x00000dac, - StringNames__Enum_GameTypeError = 0x00000dad, - StringNames__Enum_GameTypeClassic = 0x00000dae, - StringNames__Enum_GameTypeHideAndSeek = 0x00000daf, - StringNames__Enum_PetAction = 0x00000db0, - StringNames__Enum_CreateLabel = 0x00000db1, - StringNames__Enum_TagFiltersTitle = 0x00000db2, - StringNames__Enum_TagFiltersHelpFindGame = 0x00000db3, - StringNames__Enum_TagFiltersHelpCreate = 0x00000db4, - StringNames__Enum_TagsFilteredSingular = 0x00000db5, - StringNames__Enum_TagsFilteredPlural = 0x00000db6, - StringNames__Enum_TagsAppliedSingular = 0x00000db7, - StringNames__Enum_TagsAppliedPlural = 0x00000db8, - StringNames__Enum_DefaultFilterTag_FirstTime = 0x00000db9, - StringNames__Enum_DefaultFilterTag_Casual = 0x00000dba, - StringNames__Enum_DefaultFilterTag_Serious = 0x00000dbb, - StringNames__Enum_DefaultFilterTag_Expert = 0x00000dbc, - StringNames__Enum_HttpErrorContextNone = 0x00000dbd, - StringNames__Enum_HttpErrorContextAuthenticate = 0x00000dbe, - StringNames__Enum_HttpErrorContextRequestGameCode = 0x00000dbf, - StringNames__Enum_HttpErrorContextFindHostServer = 0x00000dc0, - StringNames__Enum_HttpErrorContextRequestGamesList = 0x00000dc1, - StringNames__Enum_HttpErrorUnknown = 0x00000dc2, - StringNames__Enum_HttpErrorBadRequest = 0x00000dc3, - StringNames__Enum_HttpErrorUnauthorized = 0x00000dc4, - StringNames__Enum_HttpErrorForbidden = 0x00000dc5, - StringNames__Enum_HttpErrorNotFound = 0x00000dc6, - StringNames__Enum_HttpErrorMethodNotAllowed = 0x00000dc7, - StringNames__Enum_HttpErrorRequestTimeout = 0x00000dc8, - StringNames__Enum_HttpErrorTooManyRequests = 0x00000dc9, - StringNames__Enum_HttpErrorInternalServerError = 0x00000dca, - StringNames__Enum_HttpErrorBadGateway = 0x00000dcb, - StringNames__Enum_HttpErrorServiceUnavailable = 0x00000dcc, - StringNames__Enum_HttpErrorGatewayTimeout = 0x00000dcd, - }; - -#endif + typedef int32_t StringNames__Enum; #pragma endregion #pragma region SwitchSystem - struct __declspec(align(4)) SwitchSystem__Fields - { + struct __declspec(align(4)) SwitchSystem__Fields { float DetoriorationTime; uint8_t Value; float timer; @@ -7695,34 +5062,29 @@ namespace app bool _IsDirty_k__BackingField; }; - struct SwitchSystem - { + struct SwitchSystem { struct SwitchSystem__Class* klass; - void* monitor; + MonitorData* monitor; struct SwitchSystem__Fields fields; }; - struct SwitchSystem__VTable - { + struct SwitchSystem__VTable { VirtualInvokeData Equals; VirtualInvokeData Finalize; VirtualInvokeData GetHashCode; VirtualInvokeData ToString; VirtualInvokeData get_IsDirty; - VirtualInvokeData Detoriorate; - VirtualInvokeData RepairDamage; + VirtualInvokeData Deteriorate; VirtualInvokeData UpdateSystem; VirtualInvokeData Serialize; VirtualInvokeData Deserialize; VirtualInvokeData get_IsActive; }; - struct SwitchSystem__StaticFields - { + struct SwitchSystem__StaticFields { }; - struct SwitchSystem__Class - { + struct SwitchSystem__Class { Il2CppClass_0 _0; Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets; struct SwitchSystem__StaticFields* static_fields; @@ -8041,7 +5403,6 @@ namespace app #pragma region AirshipStatus struct AirshipStatus__Fields { struct ShipStatus__Fields _; - void* Ladders; void* SpawnInGame; struct MovingPlatformBehaviour* GapPlatform; void* ShowerParticles; @@ -8049,15 +5410,13 @@ namespace app struct GameObject* outOfOrderPlat; }; - struct AirshipStatus - { + struct AirshipStatus { struct AirshipStatus__Class* klass; - void* monitor; + MonitorData* monitor; struct AirshipStatus__Fields fields; }; - struct AirshipStatus__VTable - { + struct AirshipStatus__VTable { VirtualInvokeData Equals; VirtualInvokeData Finalize; VirtualInvokeData GetHashCode; @@ -8070,20 +5429,19 @@ namespace app VirtualInvokeData Serialize; VirtualInvokeData Deserialize; VirtualInvokeData OnEnable; - VirtualInvokeData RepairGameOverSystems; + VirtualInvokeData RepairCriticalSabotages; VirtualInvokeData Start; VirtualInvokeData SpawnPlayer; VirtualInvokeData OnMeetingCalled; + VirtualInvokeData StartSFX; VirtualInvokeData PrespawnStep; VirtualInvokeData CalculateLightRadius; }; - struct AirshipStatus__StaticFields - { + struct AirshipStatus__StaticFields { }; - struct AirshipStatus__Class - { + struct AirshipStatus__Class { Il2CppClass_0 _0; Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets; struct AirshipStatus__StaticFields* static_fields; @@ -8544,8 +5902,7 @@ namespace app VirtualInvokeData GetHashCode; VirtualInvokeData ToString; VirtualInvokeData get_IsDirty; - VirtualInvokeData Detoriorate; - VirtualInvokeData RepairDamage; + VirtualInvokeData Deteriorate; VirtualInvokeData UpdateSystem; VirtualInvokeData Serialize; VirtualInvokeData Deserialize; @@ -8624,7 +5981,10 @@ namespace app void* OpenSound; void* CloseSound; void* inputHandler; + bool multistageMinigameChecked; + void* multistageMinigameParent; void* logger; + float timeOpened; }; struct Minigame @@ -8640,6 +6000,7 @@ namespace app VirtualInvokeData Finalize; VirtualInvokeData GetHashCode; VirtualInvokeData ToString; + VirtualInvokeData get_SkipMultistageOverlayMenuSetup; VirtualInvokeData Begin; VirtualInvokeData Close; VirtualInvokeData CoAnimateOpen; @@ -8684,8 +6045,7 @@ namespace app #endif - struct DoorCardSwipeGame__Fields - { + struct DoorCardSwipeGame__Fields { struct Minigame__Fields _; struct Color gray; struct Color green; @@ -8710,22 +6070,21 @@ namespace app bool moving; struct Vector2 prevStickInput; bool hadPrev; - struct PlainDoor* MyDoor; + struct OpenableDoor* MyDoor; }; - struct DoorCardSwipeGame - { + struct DoorCardSwipeGame { struct DoorCardSwipeGame__Class* klass; - void* monitor; + MonitorData* monitor; struct DoorCardSwipeGame__Fields fields; }; - struct DoorCardSwipeGame__VTable - { + struct DoorCardSwipeGame__VTable { VirtualInvokeData Equals; VirtualInvokeData Finalize; VirtualInvokeData GetHashCode; VirtualInvokeData ToString; + VirtualInvokeData get_SkipMultistageOverlayMenuSetup; VirtualInvokeData Begin; VirtualInvokeData Close; VirtualInvokeData CoAnimateOpen; @@ -8733,12 +6092,10 @@ namespace app VirtualInvokeData SetDoor; }; - struct DoorCardSwipeGame__StaticFields - { + struct DoorCardSwipeGame__StaticFields { }; - struct DoorCardSwipeGame__Class - { + struct DoorCardSwipeGame__Class { Il2CppClass_0 _0; Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets; struct DoorCardSwipeGame__StaticFields* static_fields; @@ -8815,6 +6172,26 @@ namespace app StopCharles = 0x0000003b, VentCleaning = 0x0000003c, None = 0x0000003d, + BuildSandcastle = 0x0000003e, + CatchFish = 0x0000003f, + CollectShells = 0x00000040, + LiftWeights = 0x00000041, + RoastMarshmallow = 0x00000042, + TestFrisbee = 0x00000043, + CollectSamples = 0x00000044, + CollectVegetables = 0x00000045, + HoistSupplies = 0x00000046, + MineOres = 0x00000047, + PolishGem = 0x00000048, + ReplaceParts = 0x00000049, + HelpCritter = 0x0000004a, + CrankGenerator = 0x0000004b, + FixAntenna = 0x0000004c, + TuneRadio = 0x0000004d, + MushroomMixupSabotage = 0x0000004e, + ExtractFuel = 0x0000004f, + MonitorMushroom = 0x00000050, + PlayVideogame = 0x00000051, }; #else @@ -8882,6 +6259,26 @@ namespace app TaskTypes__Enum_StopCharles = 0x0000003b, TaskTypes__Enum_VentCleaning = 0x0000003c, TaskTypes__Enum_None = 0x0000003d, + TaskTypes__Enum_BuildSandcastle = 0x0000003e, + TaskTypes__Enum_CatchFish = 0x0000003f, + TaskTypes__Enum_CollectShells = 0x00000040, + TaskTypes__Enum_LiftWeights = 0x00000041, + TaskTypes__Enum_RoastMarshmallow = 0x00000042, + TaskTypes__Enum_TestFrisbee = 0x00000043, + TaskTypes__Enum_CollectSamples = 0x00000044, + TaskTypes__Enum_CollectVegetables = 0x00000045, + TaskTypes__Enum_HoistSupplies = 0x00000046, + TaskTypes__Enum_MineOres = 0x00000047, + TaskTypes__Enum_PolishGem = 0x00000048, + TaskTypes__Enum_ReplaceParts = 0x00000049, + TaskTypes__Enum_HelpCritter = 0x0000004a, + TaskTypes__Enum_CrankGenerator = 0x0000004b, + TaskTypes__Enum_FixAntenna = 0x0000004c, + TaskTypes__Enum_TuneRadio = 0x0000004d, + TaskTypes__Enum_MushroomMixupSabotage = 0x0000004e, + TaskTypes__Enum_ExtractFuel = 0x0000004f, + TaskTypes__Enum_MonitorMushroom = 0x00000050, + TaskTypes__Enum_PlayVideogame = 0x00000051, }; #endif @@ -9425,6 +6822,7 @@ namespace app #endif struct PlayerMaterial_Properties { + bool IsLocalPlayer; #if defined(_CPLUSPLUS_) PlayerMaterial_MaskType__Enum MaskType; #else @@ -9439,6 +6837,7 @@ namespace app struct SkinLayer__Fields { struct MonoBehaviour__Fields _; + int32_t JUMP_ZIPLINE_FRAME_STOP; struct SpriteRenderer* layer; void* animator; void* skin; @@ -9576,6 +6975,7 @@ namespace app bool visible; bool isNameVisible; bool lockVisible; + bool localPlayer; }; struct CosmeticsLayer__VTable { @@ -9628,8 +7028,10 @@ namespace app bool onLadder; bool protectedByGuardianThisRound; bool shapeshifting; + bool waitingForShapeshiftResponse; + bool isKilling; struct GameData_PlayerInfo* _cachedData; - bool protectedByGuardian; + int32_t protectedByGuardianId; float flashlightAngle; int32_t shapeshiftTargetPlayerId; void* FootSteps; @@ -9650,9 +7052,11 @@ namespace app bool isDummy; bool notRealPlayer; void* logger; + void* visibilityItems; void* hitBuffer; void* closest; bool isNew; + void* rigidbody2D; void* cache; void* itemsInRange; void* newItemsInRange; @@ -9851,6 +7255,7 @@ namespace app void* consoleUIObjects; struct GameObject* menuNavigationPrompts; struct GameObject* GameLoadAnimation; + void* LobbyTimerExtensionUI; float consoleUIHorizontalShift; struct GameObject* playerListPrompt; void* AlertFlash; @@ -10066,8 +7471,7 @@ namespace app #endif - struct MeetingHud__Fields - { + struct MeetingHud__Fields { struct InnerNetObject__Fields _; struct SpriteRenderer* BlackBackground; void* OuterMasks; @@ -10109,15 +7513,13 @@ namespace app void* ControllerSelectable; }; - struct MeetingHud - { + struct MeetingHud { struct MeetingHud__Class* klass; - void* monitor; + MonitorData* monitor; struct MeetingHud__Fields fields; }; - struct MeetingHud__VTable - { + struct MeetingHud__VTable { VirtualInvokeData Equals; VirtualInvokeData Finalize; VirtualInvokeData GetHashCode; @@ -10133,13 +7535,11 @@ namespace app VirtualInvokeData HandleDisconnect_1; }; - struct MeetingHud__StaticFields - { + struct MeetingHud__StaticFields { struct MeetingHud* Instance; }; - struct MeetingHud__Class - { + struct MeetingHud__Class { Il2CppClass_0 _0; Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets; struct MeetingHud__StaticFields* static_fields; @@ -10150,29 +7550,37 @@ namespace app #pragma endregion #pragma region CustomNetworkTransform + struct Nullable_1_UnityEngine_Vector2_ { + struct Vector2 value; + bool has_value; + }; + struct CustomNetworkTransform__Fields { struct InnerNetObject__Fields _; - float sendInterval; - float snapThreshold; - float interpolateMovement; struct PlayerControl* myPlayer; void* body; - struct Vector2 targetSyncPosition; - struct Vector2 targetSyncVelocity; + void* sendQueue; + void* incomingPosQueue; + float rubberbandModifier; + float idealSpeed; + bool isPaused; uint16_t lastSequenceId; - struct Vector2 prevPosSent; - struct Vector2 prevVelSent; + struct Vector2 lastPosition; + struct Vector2 lastPosSent; + struct Nullable_1_UnityEngine_Vector2_ tempSnapPosition; + void* debugPopPositions; + void* debugTargetPositions; + void* debugTruePositions; + void* debugNetLogger; }; - struct CustomNetworkTransform - { + struct CustomNetworkTransform { struct CustomNetworkTransform__Class* klass; - void* monitor; + MonitorData* monitor; struct CustomNetworkTransform__Fields fields; }; - struct CustomNetworkTransform__VTable - { + struct CustomNetworkTransform__VTable { VirtualInvokeData Equals; VirtualInvokeData Finalize; VirtualInvokeData GetHashCode; @@ -10186,12 +7594,10 @@ namespace app VirtualInvokeData Deserialize; }; - struct CustomNetworkTransform__StaticFields - { + struct CustomNetworkTransform__StaticFields { }; - struct CustomNetworkTransform__Class - { + struct CustomNetworkTransform__Class { Il2CppClass_0 _0; Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets; struct CustomNetworkTransform__StaticFields* static_fields; @@ -10216,6 +7622,7 @@ namespace app struct GameObject* mainMenuUI; struct GameObject* rightPanelMask; struct SpriteRenderer* screenTint; + void* freePlayButton; void* playButton; void* inventoryButton; void* shopButton; @@ -10310,6 +7717,7 @@ namespace app PlatformUserBlock = 0x000000d4, PlatformFailedToGetUserBlock = 0x000000d5, ServerNotFound = 0x000000d6, + ClientTimeout = 0x000000d7, Unknown = 0x000000ff, }; @@ -10357,6 +7765,7 @@ namespace app DisconnectReasons__Enum_PlatformUserBlock = 0x000000d4, DisconnectReasons__Enum_PlatformFailedToGetUserBlock = 0x000000d5, DisconnectReasons__Enum_ServerNotFound = 0x000000d6, + DisconnectReasons__Enum_ClientTimeout = 0x000000d7, DisconnectReasons__Enum_Unknown = 0x000000ff, }; @@ -10491,15 +7900,13 @@ namespace app bool appPaused; }; - struct InnerNetClient - { + struct InnerNetClient { struct InnerNetClient__Class* klass; - void* monitor; + MonitorData* monitor; struct InnerNetClient__Fields fields; }; - struct InnerNetClient__VTable - { + struct InnerNetClient__VTable { VirtualInvokeData Equals; VirtualInvokeData Finalize; VirtualInvokeData GetHashCode; @@ -10522,14 +7929,12 @@ namespace app VirtualInvokeData __unknown_11; }; - struct InnerNetClient__StaticFields - { - void* disconnectReasons; + struct InnerNetClient__StaticFields { + void* DontBotherLoggingTheseDisconnectReasons; int32_t SecondsSuspendedBeforeDisconnect; }; - struct InnerNetClient__Class - { + struct InnerNetClient__Class { Il2CppClass_0 _0; Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets; struct InnerNetClient__StaticFields* static_fields; @@ -10797,22 +8202,22 @@ namespace app #pragma endregion #pragma region LobbyBehaviour - struct LobbyBehaviour__Fields - { + struct LobbyBehaviour__Fields { struct InnerNetObject__Fields _; void* SpawnSound; void* SpawnInClip; void* SpawnPositions; void* DropShipSound; void* AllRooms; + void* logger; float lastFriendsCheckTime; float optionsTimer; + int32_t currentExtensionId; }; - struct LobbyBehaviour - { + struct LobbyBehaviour { struct LobbyBehaviour__Class* klass; - void* monitor; + MonitorData* monitor; struct LobbyBehaviour__Fields fields; }; @@ -10848,23 +8253,21 @@ namespace app #pragma endregion #pragma region NoShadowBehaviour - struct NoShadowBehaviour__Fields - { + struct NoShadowBehaviour__Fields { struct MonoBehaviour__Fields _; struct Renderer* rend; bool didHit; struct Renderer* shadowChild; - void* hitOverride; + struct Collider2D* hitOverride; void* bc; bool isBox; bool verticalBox; void* boxCheckPoints; }; - struct NoShadowBehaviour - { + struct NoShadowBehaviour { struct NoShadowBehaviour__Class* klass; - void* monitor; + MonitorData* monitor; struct NoShadowBehaviour__Fields fields; }; @@ -10892,20 +8295,17 @@ namespace app #pragma endregion #pragma region PolusShipStatus - struct PolusShipStatus__Fields - { + struct PolusShipStatus__Fields { struct ShipStatus__Fields _; }; - struct PolusShipStatus - { + struct PolusShipStatus { struct PolusShipStatus__Class* klass; - void* monitor; + MonitorData* monitor; struct PolusShipStatus__Fields fields; }; - struct PolusShipStatus__VTable - { + struct PolusShipStatus__VTable { VirtualInvokeData Equals; VirtualInvokeData Finalize; VirtualInvokeData GetHashCode; @@ -10918,20 +8318,19 @@ namespace app VirtualInvokeData Serialize; VirtualInvokeData Deserialize; VirtualInvokeData OnEnable; - VirtualInvokeData RepairGameOverSystems; + VirtualInvokeData RepairCriticalSabotages; VirtualInvokeData Start; VirtualInvokeData SpawnPlayer; VirtualInvokeData OnMeetingCalled; + VirtualInvokeData StartSFX; VirtualInvokeData PrespawnStep; VirtualInvokeData CalculateLightRadius; }; - struct PolusShipStatus__StaticFields - { + struct PolusShipStatus__StaticFields { }; - struct PolusShipStatus__Class - { + struct PolusShipStatus__Class { Il2CppClass_0 _0; Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets; struct PolusShipStatus__StaticFields* static_fields; @@ -10942,27 +8341,25 @@ namespace app #pragma endregion #pragma region DoorBreakerGame - struct DoorBreakerGame__Fields - { + struct DoorBreakerGame__Fields { struct Minigame__Fields _; - struct PlainDoor* MyDoor; - void* Buttons; + struct OpenableDoor* MyDoor; + struct SpriteRenderer__Array* Buttons; void* FlipSound; }; - struct DoorBreakerGame - { + struct DoorBreakerGame { struct DoorBreakerGame__Class* klass; - void* monitor; + MonitorData* monitor; struct DoorBreakerGame__Fields fields; }; - struct DoorBreakerGame__VTable - { + struct DoorBreakerGame__VTable { VirtualInvokeData Equals; VirtualInvokeData Finalize; VirtualInvokeData GetHashCode; VirtualInvokeData ToString; + VirtualInvokeData get_SkipMultistageOverlayMenuSetup; VirtualInvokeData Begin; VirtualInvokeData Close; VirtualInvokeData CoAnimateOpen; @@ -10970,12 +8367,10 @@ namespace app VirtualInvokeData SetDoor; }; - struct DoorBreakerGame__StaticFields - { + struct DoorBreakerGame__StaticFields { }; - struct DoorBreakerGame__Class - { + struct DoorBreakerGame__Class { Il2CppClass_0 _0; Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets; struct DoorBreakerGame__StaticFields* static_fields; @@ -10999,6 +8394,7 @@ namespace app void* monitor; struct SabotageTask__Fields fields; }; + struct SabotageTask__VTable { VirtualInvokeData Equals; @@ -11083,7 +8479,7 @@ namespace app uint8_t ParentId; struct Collider2D* myCollider; struct SpriteRenderer* bloodSplatter; - struct SpriteRenderer* bodyRenderer; + struct SpriteRenderer__Array* bodyRenderers; }; struct DeadBody @@ -11521,6 +8917,7 @@ namespace app void* walkClip; void* petClip; bool beingPet; + bool manualMoving; }; struct PetBehaviour { @@ -12304,14 +9701,24 @@ namespace app struct MonoBehaviour__Fields _; }; - struct PlainDoor__Fields { + struct OpenableDoor__Fields { struct SomeKindaDoor__Fields _; + int32_t Id; #if defined(_CPLUSPLUS_) SystemTypes__Enum Room; #else uint8_t Room; #endif - int32_t Id; + }; + + struct OpenableDoor { + void* klass; + MonitorData* monitor; + struct OpenableDoor__Fields fields; + }; + + struct PlainDoor__Fields { + struct OpenableDoor__Fields _; bool Open; void* myCollider; struct Collider2D* shadowCollider; @@ -12337,9 +9744,11 @@ namespace app VirtualInvokeData GetHashCode; VirtualInvokeData ToString; VirtualInvokeData SetDoorway; + VirtualInvokeData get_IsOpen; VirtualInvokeData Serialize; VirtualInvokeData Deserialize; VirtualInvokeData DoUpdate; + VirtualInvokeData Start; }; struct PlainDoor__StaticFields @@ -12379,9 +9788,11 @@ namespace app VirtualInvokeData GetHashCode; VirtualInvokeData ToString; VirtualInvokeData SetDoorway; + VirtualInvokeData get_IsOpen; VirtualInvokeData Serialize; VirtualInvokeData Deserialize; VirtualInvokeData DoUpdate; + VirtualInvokeData Start; }; struct AutoOpenDoor__StaticFields @@ -12414,6 +9825,10 @@ namespace app float spreadAmount; float spreadShift; struct SpriteRenderer* myRend; + void* myAnim; + int32_t numFramesUntilPlayerDisappearsOnEnter; + int32_t numFramesUntilPlayerReappearsOnExit; + struct GameObject* additionalExitAnimation; }; struct Vent @@ -12595,6 +10010,18 @@ namespace app float TaskTimer; struct Byte__Array* Data; void* Arrow; + bool useMultipleText; + int32_t maxNumStepsStage1; +#if defined(_CPLUSPLUS_) + StringNames__Enum textStage1; +#else + int32_t textStage1; +#endif +#if defined(_CPLUSPLUS_) + StringNames__Enum textStage2; +#else + int32_t textStage2; +#endif bool arrowSuspended; }; @@ -12619,7 +10046,7 @@ namespace app VirtualInvokeData Complete; VirtualInvokeData AppendTaskText; VirtualInvokeData GetMinigamePrefab; - VirtualInvokeData UpdateArrow; + VirtualInvokeData UpdateArrowAndLocation; VirtualInvokeData FixedUpdate; }; @@ -12774,6 +10201,7 @@ namespace app float cooldownSecondsRemaining; float inVentTimeRemaining; int32_t usesRemaining; + bool isExitVentQueued; }; struct EngineerRole diff --git a/hooks/Doors.cpp b/hooks/Doors.cpp index 8178cc3c..815a3cef 100644 --- a/hooks/Doors.cpp +++ b/hooks/Doors.cpp @@ -4,15 +4,15 @@ #include "_rpc.h" void dPlainDoor_SetDoorway(PlainDoor* __this, bool open, MethodInfo* method) { - if (open && (std::find(State.pinnedDoors.begin(), State.pinnedDoors.end(), __this->fields.Room) != State.pinnedDoors.end())) { - State.rpcQueue.push(new RpcCloseDoorsOfType(__this->fields.Room, false)); + if (open && (std::find(State.pinnedDoors.begin(), State.pinnedDoors.end(), __this->fields._.Room) != State.pinnedDoors.end())) { + State.rpcQueue.push(new RpcCloseDoorsOfType(__this->fields._.Room, false)); } app::PlainDoor_SetDoorway(__this, open, method); } bool dAutoOpenDoor_DoUpdate(AutoOpenDoor* __this, float dt, MethodInfo* method) { - if ((std::find(State.pinnedDoors.begin(), State.pinnedDoors.end(), __this->fields._.Room) != State.pinnedDoors.end()) && __this->fields.ClosedTimer < 1.5f) { - State.rpcQueue.push(new RpcCloseDoorsOfType(__this->fields._.Room, false)); + if ((std::find(State.pinnedDoors.begin(), State.pinnedDoors.end(), __this->fields._._.Room) != State.pinnedDoors.end()) && __this->fields.ClosedTimer < 1.5f) { + State.rpcQueue.push(new RpcCloseDoorsOfType(__this->fields._._.Room, false)); } return app::AutoOpenDoor_DoUpdate(__this, dt, method); } \ No newline at end of file diff --git a/used_types.txt b/used_types.txt index 8414744d..041b433f 100644 --- a/used_types.txt +++ b/used_types.txt @@ -60,7 +60,7 @@ EOSManager FullAccount SpawnFlags__Enum InnerNetObject -PlainDoor__Array +OpenableDoor__Array PlayerVoteArea PlayerVoteArea__Array SystemTypes__Enum @@ -68,7 +68,6 @@ PlainShipRoom PlainShipRoom__Array ShipStatus_MapType__Enum ShipStatus -StringNames__Enum SwitchSystem ISystemType Dictionary_2_TKey_TValue_Entry_SystemTypes_ISystemType_ diff --git a/user/utility.cpp b/user/utility.cpp index f92f732c..adca8d8b 100644 --- a/user/utility.cpp +++ b/user/utility.cpp @@ -300,7 +300,7 @@ PlainDoor* GetPlainDoorByRoom(SystemTypes__Enum room) { return nullptr; } -il2cpp::Array GetAllPlainDoors() { +il2cpp::Array GetAllPlainDoors() { return (*Game::pShipStatus)->fields.AllDoors; } diff --git a/user/utility.h b/user/utility.h index 1db25061..d6bed85a 100644 --- a/user/utility.h +++ b/user/utility.h @@ -148,7 +148,7 @@ Vector2 GetTrueAdjustedPosition(PlayerControl* player); GameData_PlayerInfo* GetPlayerDataById(Game::PlayerId id); PlayerControl* GetPlayerControlById(Game::PlayerId id); PlainDoor* GetPlainDoorByRoom(SystemTypes__Enum room); -il2cpp::Array GetAllPlainDoors(); +il2cpp::Array GetAllPlainDoors(); il2cpp::List GetAllPlayerControl(); il2cpp::List GetAllPlayerData(); il2cpp::Array GetAllDeadBodies(); From 23471a7f2fb8dc6c1fb6b7ea07095bf1ffd9d664 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=99=AF=E5=A4=A7=E4=BE=A0?= Date: Fri, 27 Oct 2023 10:08:16 +0800 Subject: [PATCH 2/9] update --- appdata/il2cpp-functions.h | 13 ++++++------- appdata/il2cpp-types.h | 24 +++++++++++++++++++++++- events/_events.h | 2 +- gui/tabs/players_tab.cpp | 2 +- hooks/PlainDoor.cpp | 26 +++++++++++++++++--------- hooks/PlayerControl.cpp | 19 ++++++++++--------- hooks/SabotageSystemType.cpp | 4 ++-- hooks/Vent.cpp | 4 ++-- hooks/_hooks.cpp | 4 ++-- hooks/_hooks.h | 8 ++++---- rpc/RpcMurderPlayer.cpp | 3 ++- rpc/RpcRepairSystem.cpp | 2 +- used_types.txt | 1 + user/utility.cpp | 3 ++- 14 files changed, 74 insertions(+), 41 deletions(-) diff --git a/appdata/il2cpp-functions.h b/appdata/il2cpp-functions.h index 42ccdef4..770927a0 100644 --- a/appdata/il2cpp-functions.h +++ b/appdata/il2cpp-functions.h @@ -90,8 +90,8 @@ DO_APP_FUNC(void, PlayerControl_RpcSyncSettings, (PlayerControl* __this, Byte__A DO_APP_FUNC(void, PlayerControl_RpcPlayAnimation, (PlayerControl* __this, uint8_t animType, MethodInfo* method), "Assembly-CSharp, System.Void PlayerControl::RpcPlayAnimation(System.Byte)"); DO_APP_FUNC(void, PlayerControl_CmdReportDeadBody, (PlayerControl* __this, GameData_PlayerInfo* target, MethodInfo* method), "Assembly-CSharp, System.Void PlayerControl::CmdReportDeadBody(GameData.PlayerInfo)"); DO_APP_FUNC(void, PlayerControl_CmdCheckMurder, (PlayerControl* __this, PlayerControl* target, MethodInfo* method), "Assembly-CSharp, System.Void PlayerControl::CmdCheckMurder(PlayerControl)"); -DO_APP_FUNC(void, PlayerControl_MurderPlayer, (PlayerControl* __this, PlayerControl* target, MethodInfo* method), "Assembly-CSharp, System.Void PlayerControl::MurderPlayer(PlayerControl)"); -DO_APP_FUNC(void, PlayerControl_RpcMurderPlayer, (PlayerControl* __this, PlayerControl* target, MethodInfo* method), "Assembly-CSharp, System.Void PlayerControl::RpcMurderPlayer(PlayerControl)"); +DO_APP_FUNC(void, PlayerControl_MurderPlayer, (PlayerControl* __this, PlayerControl* target, MurderResultFlags__Enum resultFlags, MethodInfo* method), "Assembly-CSharp, System.Void PlayerControl::MurderPlayer(PlayerControl, MurderResultFlags)"); +DO_APP_FUNC(void, PlayerControl_RpcMurderPlayer, (PlayerControl* __this, PlayerControl* target, bool didSucceed, MethodInfo* method), "Assembly-CSharp, System.Void PlayerControl::RpcMurderPlayer(PlayerControl, System.Boolean)"); DO_APP_FUNC(void, PlayerControl_ReportDeadBody, (PlayerControl* __this, GameData_PlayerInfo* target, MethodInfo* method), "Assembly-CSharp, System.Void PlayerControl::ReportDeadBody(GameData.PlayerInfo)"); DO_APP_FUNC(void, PlayerControl_StartMeeting, (PlayerControl* __this, GameData_PlayerInfo* target, MethodInfo* method), "Assembly-CSharp, System.Void PlayerControl::StartMeeting(GameData.PlayerInfo)"); DO_APP_FUNC(void, PlayerControl_RpcSetRole, (PlayerControl* __this, RoleTypes__Enum roleType, MethodInfo* method), "Assembly-CSharp, System.Void PlayerControl::RpcSetRole(AmongUs.GameOptions.RoleTypes)"); @@ -117,8 +117,7 @@ DO_APP_FUNC(void, PolusShipStatus_OnEnable, (PolusShipStatus* __this, MethodInfo DO_APP_FUNC(float, ShipStatus_CalculateLightRadius, (ShipStatus* __this, GameData_PlayerInfo* player, MethodInfo* method), "Assembly-CSharp, System.Single ShipStatus::CalculateLightRadius(GameData.PlayerInfo)"); DO_APP_FUNC(void, ShipStatus_OnEnable, (ShipStatus* __this, MethodInfo* method), "Assembly-CSharp, System.Void ShipStatus::OnEnable()"); DO_APP_FUNC(void, ShipStatus_RpcCloseDoorsOfType, (ShipStatus* __this, SystemTypes__Enum type, MethodInfo* method), "Assembly-CSharp, System.Void ShipStatus::RpcCloseDoorsOfType(SystemTypes)"); -DO_APP_FUNC(void, ShipStatus_RpcRepairSystem, (ShipStatus* __this, SystemTypes__Enum systemType, int32_t amount, MethodInfo* method), "Assembly-CSharp, System.Void ShipStatus::RpcRepairSystem(SystemTypes, System.Int32)"); -DO_APP_FUNC(void, ShipStatus_RepairSystem, (ShipStatus* __this, SystemTypes__Enum systemType, PlayerControl* player, uint8_t amount, MethodInfo* method), "Assembly-CSharp, System.Void ShipStatus::RepairSystem(SystemTypes, PlayerControl, System.Byte)"); +DO_APP_FUNC(void, ShipStatus_RpcUpdateSystem, (ShipStatus* __this, SystemTypes__Enum systemType, uint8_t amount, MethodInfo* method), "Assembly-CSharp, System.Void ShipStatus::RpcUpdateSystem(SystemTypes, System.Byte)"); DO_APP_FUNC(float, StatsManager_get_BanPoints, (StatsManager* __this, MethodInfo* method), "Assembly-CSharp, System.Single StatsManager::get_BanPoints()"); DO_APP_FUNC(int32_t, StatsManager_get_BanMinutesLeft, (StatsManager* __this, MethodInfo* method), "Assembly-CSharp, System.Int32 StatsManager::get_BanMinutesLeft()"); @@ -127,7 +126,7 @@ DO_APP_FUNC(bool, StatsManager_get_AmBanned, (StatsManager* __this, MethodInfo* DO_APP_FUNC(float, Vent_CanUse, (Vent* __this, GameData_PlayerInfo* player, bool* canUse, bool* couldUse, MethodInfo* method), "Assembly-CSharp, System.Single Vent::CanUse(GameData.PlayerInfo, System.Boolean&, System.Boolean&)"); DO_APP_FUNC(float, Vent_get_UsableDistance, (Vent* __this, MethodInfo* method), "Assembly-CSharp, System.Single Vent::get_UsableDistance()"); DO_APP_FUNC(void, Vent_EnterVent, (Vent* __this, PlayerControl* pc, MethodInfo* method), "Assembly-CSharp, System.Void Vent::EnterVent(PlayerControl)"); -DO_APP_FUNC(void, Vent_ExitVent, (Vent* __this, PlayerControl* pc, MethodInfo* method), "Assembly-CSharp, System.Void Vent::ExitVent(PlayerControl)"); +DO_APP_FUNC(void*, Vent_ExitVent, (Vent* __this, PlayerControl* pc, MethodInfo* method), "Assembly-CSharp, System.Collections.IEnumerator Vent::ExitVent(PlayerControl)"); DO_APP_FUNC(void, HudManager_Update, (HudManager* __this, MethodInfo* method), "Assembly-CSharp, System.Void HudManager::Update()"); DO_APP_FUNC(void, HudManager_SetHudActive, (HudManager* __this, bool isActive, MethodInfo* method), "Assembly-CSharp, System.Void HudManager::SetHudActive(System.Boolean)"); @@ -205,7 +204,7 @@ DO_APP_FUNC(void, InnerNetClient_DisconnectInternal, (InnerNetClient* __this, Di DO_APP_FUNC(void, PlayerPhysics_FixedUpdate, (PlayerPhysics* __this, MethodInfo* method), "Assembly-CSharp, System.Void PlayerPhysics::FixedUpdate()"); -DO_APP_FUNC(void, PlayerControl_TurnOnProtection, (PlayerControl* __this, bool visible, int32_t colorId, MethodInfo* method), "Assembly-CSharp, System.Void PlayerControl::TurnOnProtection(System.Boolean, System.Int32)"); +DO_APP_FUNC(void, PlayerControl_TurnOnProtection, (PlayerControl* __this, bool visible, int32_t colorId, int32_t guardianPlayerId, MethodInfo* method), "Assembly-CSharp, System.Void PlayerControl::TurnOnProtection(System.Boolean, System.Int32, System.Int32)"); DO_APP_FUNC(void, PlayerControl_RemoveProtection, (PlayerControl* __this, MethodInfo* method), "Assembly-CSharp, System.Void PlayerControl::RemoveProtection()"); DO_APP_FUNC(bool, Object_1_op_Implicit, (Object_1* exists, MethodInfo* method), "UnityEngine.CoreModule, System.Boolean UnityEngine.Object::op_Implicit(UnityEngine.Object)"); @@ -213,7 +212,7 @@ DO_APP_FUNC(void, PlayerControl_ShowFailedMurder, (PlayerControl* __this, Method DO_APP_FUNC(bool, PlayerControl_get_IsKillTimerEnabled, (PlayerControl* __this, MethodInfo* method), "Assembly-CSharp, System.Boolean PlayerControl::get_IsKillTimerEnabled()"); DO_APP_FUNC(void, ExileController_ReEnableGameplay, (ExileController* __this, MethodInfo* method), "Assembly-CSharp, System.Void ExileController::ReEnableGameplay()"); -DO_APP_FUNC(void, SabotageSystemType_ForceSabTime, (SabotageSystemType* __this, float t, MethodInfo* method), "Assembly-CSharp, System.Void SabotageSystemType::ForceSabTime(System.Single)"); +DO_APP_FUNC(void, SabotageSystemType_SetInitialSabotageCooldown, (SabotageSystemType* __this, MethodInfo* method), "Assembly-CSharp, System.Void SabotageSystemType::SetInitialSabotageCooldown()"); DO_APP_FUNC(PlayerControl*, GameData_PlayerInfo_get_Object, (GameData_PlayerInfo* __this, MethodInfo* method), "Assembly-CSharp, PlayerControl GameData+PlayerInfo::get_Object()"); DO_APP_FUNC(GameData_PlayerOutfit*, GameData_PlayerInfo_get_DefaultOutfit, (GameData_PlayerInfo* __this, MethodInfo* method), "Assembly-CSharp, GameData.PlayerOutfit GameData+PlayerInfo::get_DefaultOutfit()"); diff --git a/appdata/il2cpp-types.h b/appdata/il2cpp-types.h index 622874ba..4c7ca790 100644 --- a/appdata/il2cpp-types.h +++ b/appdata/il2cpp-types.h @@ -4396,6 +4396,28 @@ namespace app #endif #pragma endregion +#pragma region MurderResultFlags__Enum +#if defined(_CPLUSPLUS_) + enum class MurderResultFlags__Enum : int32_t { + NULL_1 = 0x00000000, + Succeeded = 0x00000001, + FailedError = 0x00000002, + FailedProtected = 0x00000004, + DecisionByHost = 0x00000008, + }; + +#else + enum MurderResultFlags__Enum { + MurderResultFlags__Enum_NULL_1 = 0x00000000, + MurderResultFlags__Enum_Succeeded = 0x00000001, + MurderResultFlags__Enum_FailedError = 0x00000002, + MurderResultFlags__Enum_FailedProtected = 0x00000004, + MurderResultFlags__Enum_DecisionByHost = 0x00000008, +}; + +#endif +#pragma endregion + #pragma region AccountTab struct AccountTab__Fields { @@ -9712,7 +9734,7 @@ namespace app }; struct OpenableDoor { - void* klass; + Il2CppClass* klass; MonitorData* monitor; struct OpenableDoor__Fields fields; }; diff --git a/events/_events.h b/events/_events.h index a23fd298..bc4125fa 100644 --- a/events/_events.h +++ b/events/_events.h @@ -75,7 +75,7 @@ struct EVENT_PLAYER { isAngel = (playerInfo->fields.Role) ? playerInfo->fields.Role->fields.Role == RoleTypes__Enum::GuardianAngel : false; if (auto object = GameData_PlayerInfo_get_Object(playerInfo, nullptr)) - isProtected = object->fields.protectedByGuardian; + isProtected = object->fields.protectedByGuardianId >= 0; else isProtected = false; } diff --git a/gui/tabs/players_tab.cpp b/gui/tabs/players_tab.cpp index b4353e86..402ee5da 100644 --- a/gui/tabs/players_tab.cpp +++ b/gui/tabs/players_tab.cpp @@ -181,7 +181,7 @@ namespace PlayersTab { && !selectedPlayer.get_PlayerControl()->fields.inVent && !selectedPlayer.get_PlayerControl()->fields.inMovingPlat && !GetPlayerData(*Game::pLocalPlayer)->fields.IsDead && ((*Game::pLocalPlayer)->fields.killTimer <= 0.0f) - && !selectedPlayer.get_PlayerControl()->fields.protectedByGuardian) + && selectedPlayer.get_PlayerControl()->fields.protectedByGuardianId <= -1) { if (ImGui::Button("Kill Player")) { diff --git a/hooks/PlainDoor.cpp b/hooks/PlainDoor.cpp index 05616326..5c33f7bc 100644 --- a/hooks/PlainDoor.cpp +++ b/hooks/PlainDoor.cpp @@ -5,21 +5,29 @@ void dDoorBreakerGame_Start(DoorBreakerGame* __this, MethodInfo* method) { if (State.AutoOpenDoors) { - State.rpcQueue.push(new RpcRepairSystem(SystemTypes__Enum::Doors, __this->fields.MyDoor->fields.Id | 64)); - PlainDoor_SetDoorway(__this->fields.MyDoor, true, NULL); - Minigame_Close((Minigame*)__this, NULL); - return; + static Il2CppClass* klassPlainDoor = get_class("Assembly-CSharp, PlainDoor"); + if (il2cpp_class_is_assignable_from(klassPlainDoor, __this->fields.MyDoor->klass)) { + State.rpcQueue.push(new RpcRepairSystem(SystemTypes__Enum::Doors, __this->fields.MyDoor->fields.Id | 64)); + PlainDoor_SetDoorway((PlainDoor*)__this->fields.MyDoor, true, NULL); + Minigame_Close((Minigame*)__this, NULL); + return; + } + // TODO 231024 } DoorBreakerGame_Start(__this, method); } void dDoorCardSwipeGame_Begin(DoorCardSwipeGame* __this, PlayerTask* playerTask, MethodInfo* method) { if (State.AutoOpenDoors) { - __this->fields.State = DoorCardSwipeGame_TaskStages__Enum::Inserted; - State.rpcQueue.push(new RpcRepairSystem(SystemTypes__Enum::Doors, __this->fields.MyDoor->fields.Id | 64)); - PlainDoor_SetDoorway(__this->fields.MyDoor, true, NULL); - Minigame_Close((Minigame*)__this, NULL); - return; + static Il2CppClass* klassPlainDoor = get_class("Assembly-CSharp, PlainDoor"); + if (il2cpp_class_is_assignable_from(klassPlainDoor, __this->fields.MyDoor->klass)) { + __this->fields.State = DoorCardSwipeGame_TaskStages__Enum::Inserted; + State.rpcQueue.push(new RpcRepairSystem(SystemTypes__Enum::Doors, __this->fields.MyDoor->fields.Id | 64)); + PlainDoor_SetDoorway((PlainDoor*)__this->fields.MyDoor, true, NULL); + Minigame_Close((Minigame*)__this, NULL); + return; + } + // TODO 231024 } DoorCardSwipeGame_Begin(__this, playerTask, method); } \ No newline at end of file diff --git a/hooks/PlayerControl.cpp b/hooks/PlayerControl.cpp index bc10cb0a..1e6ca445 100644 --- a/hooks/PlayerControl.cpp +++ b/hooks/PlayerControl.cpp @@ -95,7 +95,7 @@ void dPlayerControl_FixedUpdate(PlayerControl* __this, MethodInfo* method) { // SeeProtect do { - if (!__this->fields.protectedByGuardian) + if (__this->fields.protectedByGuardianId <= -1) break; if (localData->fields.IsDead) break; @@ -121,7 +121,7 @@ void dPlayerControl_FixedUpdate(PlayerControl* __this, MethodInfo* method) { float _Duration = ProtectionDurationSeconds - (app::Time_get_time(nullptr) - pair.second); options.SetFloat(app::FloatOptionNames__Enum::ProtectionDurationSeconds, _Duration); if (_Duration > 0.f) - app::PlayerControl_TurnOnProtection(__this, State.ShowProtections, pair.first, nullptr); + app::PlayerControl_TurnOnProtection(__this, State.ShowProtections, pair.first, __this->fields.protectedByGuardianId, nullptr); options.SetFloat(app::FloatOptionNames__Enum::ProtectionDurationSeconds, ProtectionDurationSeconds); } while (0); @@ -310,7 +310,7 @@ void dPlayerControl_RpcSyncSettings(PlayerControl* __this, Byte__Array* optionsB PlayerControl_RpcSyncSettings(__this, optionsByteArray, method); } -void dPlayerControl_MurderPlayer(PlayerControl* __this, PlayerControl* target, MethodInfo* method) +void dPlayerControl_MurderPlayer(PlayerControl* __this, PlayerControl* target, MurderResultFlags__Enum resultFlags, MethodInfo* method) { if (PlayerIsImpostor(GetPlayerData(__this)) && PlayerIsImpostor(GetPlayerData(target))) { synchronized(Replay::replayEventMutex) { @@ -324,7 +324,7 @@ void dPlayerControl_MurderPlayer(PlayerControl* __this, PlayerControl* target, M // ESP: Reset Kill Cooldown if (__this->fields._.OwnerId != (*Game::pAmongUsClient)->fields._.ClientId) { - if (!target || target->fields.protectedByGuardian == false) + if (!target || target->fields.protectedByGuardianId <= -1) __this->fields.killTimer = (std::max)(GameOptions().GetKillCooldown(), 0.f); else __this->fields.killTimer = (std::max)(GameOptions().GetKillCooldown() * 0.5f, 0.f); @@ -333,7 +333,7 @@ void dPlayerControl_MurderPlayer(PlayerControl* __this, PlayerControl* target, M do { if (!State.ShowProtections) break; - if (!target || target->fields.protectedByGuardian == false) + if (!target || target->fields.protectedByGuardianId <= -1) break; if (__this->fields._.OwnerId == (*Game::pAmongUsClient)->fields._.ClientId) break; // AmKiller @@ -341,10 +341,11 @@ void dPlayerControl_MurderPlayer(PlayerControl* __this, PlayerControl* target, M !localData || !localData->fields.Role || localData->fields.Role->fields.Role == RoleTypes__Enum::GuardianAngel) break; // AmAngel + int prev = target->fields.protectedByGuardianId; PlayerControl_ShowFailedMurder(target, nullptr); - target->fields.protectedByGuardian = true; + target->fields.protectedByGuardianId = prev; } while (false); - PlayerControl_MurderPlayer(__this, target, method); + PlayerControl_MurderPlayer(__this, target, resultFlags, method); } void dPlayerControl_StartMeeting(PlayerControl* __this, GameData_PlayerInfo* target, MethodInfo* method) @@ -426,8 +427,8 @@ void dPlayerControl_ProtectPlayer(PlayerControl* __this, PlayerControl* target, PlayerControl_ProtectPlayer(__this, target, colorId, method); } -void dPlayerControl_TurnOnProtection(PlayerControl* __this, bool visible, int32_t colorId, MethodInfo* method) { - app::PlayerControl_TurnOnProtection(__this, visible || State.ShowProtections, colorId, method); +void dPlayerControl_TurnOnProtection(PlayerControl* __this, bool visible, int32_t colorId, int32_t guardianPlayerId, MethodInfo* method) { + app::PlayerControl_TurnOnProtection(__this, visible || State.ShowProtections, colorId, guardianPlayerId, method); std::pair pair { colorId, app::Time_get_time(nullptr) }; synchronized(State.protectMutex) { State.protectMonitor[__this->fields.PlayerId] = pair; diff --git a/hooks/SabotageSystemType.cpp b/hooks/SabotageSystemType.cpp index 6b848618..c8428e5b 100644 --- a/hooks/SabotageSystemType.cpp +++ b/hooks/SabotageSystemType.cpp @@ -3,8 +3,8 @@ #include "utility.h" #include "logger.h" -void dSabotageSystemType_ForceSabTime(SabotageSystemType* __this, float t, MethodInfo* method) { - app::SabotageSystemType_ForceSabTime(__this, t, method); +void dSabotageSystemType_SetInitialSabotageCooldown(SabotageSystemType* __this, MethodInfo* method) { + app::SabotageSystemType_SetInitialSabotageCooldown(__this, method); // ESP: Initialize Kill Cooldown for (auto pc : GetAllPlayerControl()) { diff --git a/hooks/Vent.cpp b/hooks/Vent.cpp index 8cef9dc8..bd95ed7d 100644 --- a/hooks/Vent.cpp +++ b/hooks/Vent.cpp @@ -41,11 +41,11 @@ void dVent_EnterVent(Vent* __this, PlayerControl* pc, MethodInfo * method) { Vent_EnterVent(__this, pc, method); } -void dVent_ExitVent(Vent* __this, PlayerControl* pc, MethodInfo * method) { +void* dVent_ExitVent(Vent* __this, PlayerControl* pc, MethodInfo * method) { auto ventVector = app::Transform_get_position(app::Component_get_transform((Component_1*)__this, NULL), NULL); app::Vector2 ventVector2D = {ventVector.x, ventVector.y}; synchronized(Replay::replayEventMutex) { State.liveReplayEvents.emplace_back(std::make_unique(GetEventPlayerControl(pc).value(), ventVector2D, VENT_ACTIONS::VENT_EXIT)); } - Vent_ExitVent(__this, pc, method); + return Vent_ExitVent(__this, pc, method); } \ No newline at end of file diff --git a/hooks/_hooks.cpp b/hooks/_hooks.cpp index 69a2fc8a..939fefb8 100644 --- a/hooks/_hooks.cpp +++ b/hooks/_hooks.cpp @@ -155,7 +155,7 @@ void DetourInitilization() { HOOKFUNC(EOSManager_UpdatePermissionKeys); HOOKFUNC(GameOptionsManager_set_CurrentGameOptions); HOOKFUNC(ExileController_ReEnableGameplay); - HOOKFUNC(SabotageSystemType_ForceSabTime); + HOOKFUNC(SabotageSystemType_SetInitialSabotageCooldown); if (!HookFunction(&(PVOID&)oPresent, dPresent, "D3D_PRESENT_FUNCTION")) return; @@ -236,7 +236,7 @@ void DetourUninitialization() UNHOOKFUNC(EOSManager_UpdatePermissionKeys); UNHOOKFUNC(GameOptionsManager_set_CurrentGameOptions); UNHOOKFUNC(ExileController_ReEnableGameplay); - UNHOOKFUNC(SabotageSystemType_ForceSabTime); + UNHOOKFUNC(SabotageSystemType_SetInitialSabotageCooldown); if (DetourDetach(&(PVOID&)oPresent, dPresent) != 0) return; diff --git a/hooks/_hooks.h b/hooks/_hooks.h index 7dfc5e6f..49f69b44 100644 --- a/hooks/_hooks.h +++ b/hooks/_hooks.h @@ -27,7 +27,7 @@ void dMeetingHud_PopulateResults(MeetingHud* __this, Il2CppArraySize* states, Me void dPlainDoor_SetDoorway(PlainDoor* __this, bool open, MethodInfo* method); void dPlayerControl_CompleteTask(PlayerControl* __this, uint32_t idx, MethodInfo* method); void dPlayerControl_FixedUpdate(PlayerControl* __this, MethodInfo* method); -void dPlayerControl_MurderPlayer(PlayerControl* __this, PlayerControl* target, MethodInfo* method); +void dPlayerControl_MurderPlayer(PlayerControl* __this, PlayerControl* target, MurderResultFlags__Enum resultFlags, MethodInfo* method); void dPlayerControl_StartMeeting(PlayerControl* __this, GameData_PlayerInfo* target, MethodInfo* method); void dPlayerControl_RpcSyncSettings(PlayerControl* __this, Byte__Array* optionsByteArray, MethodInfo* method); void dPlayerControl_HandleRpc(PlayerControl* __this, uint8_t callId, MessageReader* reader, MethodInfo* method); @@ -38,7 +38,7 @@ void dSceneManager_Internal_ActiveSceneChanged(Scene previousActiveScene, Scene void dShipStatus_OnEnable(ShipStatus* __this, MethodInfo* method); void dPolusShipStatus_OnEnable(PolusShipStatus* __this, MethodInfo* method); void dVent_EnterVent(Vent* __this, PlayerControl* pc, MethodInfo * method); -void dVent_ExitVent(Vent* __this, PlayerControl* pc, MethodInfo * method); +void* dVent_ExitVent(Vent* __this, PlayerControl* pc, MethodInfo * method); void dLobbyBehaviour_Start(LobbyBehaviour* __this, MethodInfo* method); void dGameObject_SetActive(GameObject* __this, bool value, MethodInfo* method); void dNoShadowBehaviour_LateUpdate(NoShadowBehaviour* __this, MethodInfo* method); @@ -65,11 +65,11 @@ void dRoleManager_SelectRoles(RoleManager* __this, MethodInfo * method); //void dRoleManager_AssignRolesFromList(List_1_GameData_PlayerInfo_* players, int32_t teamMax, List_1_RoleTypes_* roleList, int32_t* rolesAssigned, MethodInfo* method); void dPlayerPhysics_FixedUpdate (PlayerPhysics* __this, MethodInfo* method); bool dSaveManager_GetPurchase(String* itemKey, String* bundleKey, MethodInfo* method); -void dPlayerControl_TurnOnProtection(PlayerControl* __this, bool visible, int32_t colorId, MethodInfo* method); +void dPlayerControl_TurnOnProtection(PlayerControl* __this, bool visible, int32_t colorId, int32_t guardianPlayerId, MethodInfo* method); void dAmongUsClient_OnGameEnd(AmongUsClient* __this, Object* endGameResult, MethodInfo* method); void dAccountManager_UpdateKidAccountDisplay(AccountManager* __this, MethodInfo* method); void dPlayerStorageManager_OnReadPlayerPrefsComplete(PlayerStorageManager* __this, void* data, MethodInfo* method); bool dPlayerPurchasesData_GetPurchase(PlayerPurchasesData* __this, String* itemKey, String* bundleKey, MethodInfo* method); void dGameOptionsManager_set_CurrentGameOptions(GameOptionsManager* __this, IGameOptions* value, MethodInfo* method); void dExileController_ReEnableGameplay(ExileController* __this, MethodInfo* method); -void dSabotageSystemType_ForceSabTime(SabotageSystemType* __this, float t, MethodInfo* method); +void dSabotageSystemType_SetInitialSabotageCooldown(SabotageSystemType* __this, MethodInfo* method); diff --git a/rpc/RpcMurderPlayer.cpp b/rpc/RpcMurderPlayer.cpp index 82f82acc..9b03f359 100644 --- a/rpc/RpcMurderPlayer.cpp +++ b/rpc/RpcMurderPlayer.cpp @@ -9,5 +9,6 @@ RpcMurderPlayer::RpcMurderPlayer(const PlayerSelection& target) void RpcMurderPlayer::Process() { - PlayerControl_RpcMurderPlayer(*Game::pLocalPlayer, target.get_PlayerControl().value_or(nullptr), NULL); + (*Game::pLocalPlayer)->fields.isKilling = true; + PlayerControl_RpcMurderPlayer(*Game::pLocalPlayer, target.get_PlayerControl().value_or(nullptr), true, NULL); } \ No newline at end of file diff --git a/rpc/RpcRepairSystem.cpp b/rpc/RpcRepairSystem.cpp index 260fd0e2..89b7876d 100644 --- a/rpc/RpcRepairSystem.cpp +++ b/rpc/RpcRepairSystem.cpp @@ -16,5 +16,5 @@ RpcRepairSystem::RpcRepairSystem(SystemTypes__Enum selectedSystem, uint32_t amou void RpcRepairSystem::Process() { - ShipStatus_RpcRepairSystem(*Game::pShipStatus, this->selectedSystem, this->amount, NULL); + ShipStatus_RpcUpdateSystem(*Game::pShipStatus, this->selectedSystem, this->amount, NULL); } \ No newline at end of file diff --git a/used_types.txt b/used_types.txt index 041b433f..6fd75f35 100644 --- a/used_types.txt +++ b/used_types.txt @@ -220,3 +220,4 @@ UpdateState__Enum AbstractChatInputField__Fields FreeChatInputField__Fields FreeChatInputField +MurderResultFlags__Enum diff --git a/user/utility.cpp b/user/utility.cpp index adca8d8b..d2694a9a 100644 --- a/user/utility.cpp +++ b/user/utility.cpp @@ -293,7 +293,8 @@ PlainDoor* GetPlainDoorByRoom(SystemTypes__Enum room) { { if (door->fields.Room == room) { - return door; + // TODO 231024 + return (PlainDoor*)door; } } From 3fafe4b66b83daf0856dd47e073d0567c0adc495 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=99=AF=E5=A4=A7=E4=BE=A0?= Date: Fri, 27 Oct 2023 18:44:32 +0800 Subject: [PATCH 3/9] update --- AmongUsMenu.vcxproj | 1 + AmongUsMenu.vcxproj.filters | 3 +++ appdata/il2cpp-functions.h | 5 ++++- appdata/il2cpp-types.h | 17 +++++++++++++++++ gui/tabs/doors_tab.cpp | 13 +++++++++---- gui/tabs/host_tab.cpp | 2 +- gui/tabs/host_tab.h | 2 +- gui/tabs/sabotage_tab.cpp | 8 +++++++- hooks/DirectX.cpp | 1 + hooks/FungleShipStatus.cpp | 35 +++++++++++++++++++++++++++++++++++ hooks/_hooks.cpp | 2 ++ hooks/_hooks.h | 1 + resources/resource_data.h | 3 ++- resources/resource_data.rc | 2 ++ resources/the_fungle.png | Bin 0 -> 36983 bytes used_types.txt | 1 + user/state.hpp | 3 ++- user/utility.cpp | 12 ++++++++++-- 18 files changed, 99 insertions(+), 12 deletions(-) create mode 100644 hooks/FungleShipStatus.cpp create mode 100644 resources/the_fungle.png diff --git a/AmongUsMenu.vcxproj b/AmongUsMenu.vcxproj index 61e2edc8..ce3f2fdf 100644 --- a/AmongUsMenu.vcxproj +++ b/AmongUsMenu.vcxproj @@ -64,6 +64,7 @@ + diff --git a/AmongUsMenu.vcxproj.filters b/AmongUsMenu.vcxproj.filters index fbfb7304..94ee1e9f 100644 --- a/AmongUsMenu.vcxproj.filters +++ b/AmongUsMenu.vcxproj.filters @@ -313,6 +313,9 @@ rpc + + hooks + diff --git a/appdata/il2cpp-functions.h b/appdata/il2cpp-functions.h index 770927a0..ef9aeef8 100644 --- a/appdata/il2cpp-functions.h +++ b/appdata/il2cpp-functions.h @@ -239,4 +239,7 @@ DO_APP_FUNC(bool, GameOptionsManager_get_HasOptions, (GameOptionsManager* __this DO_APP_FUNC(IGameOptions*, GameOptionsManager_get_CurrentGameOptions, (GameOptionsManager* __this, MethodInfo* method), "Assembly-CSharp, AmongUs.GameOptions.IGameOptions GameOptionsManager::get_CurrentGameOptions()"); DO_APP_FUNC(void, GameOptionsManager_set_CurrentGameOptions, (GameOptionsManager* __this, IGameOptions* value, MethodInfo* method), "Assembly-CSharp, System.Void GameOptionsManager::set_CurrentGameOptions(AmongUs.GameOptions.IGameOptions)"); DO_APP_FUNC(GameManager*, GameManager_get_Instance, (MethodInfo* method), "Assembly-CSharp, GameManager GameManager::get_Instance()"); -DO_APP_FUNC(LogicOptions*, GameManager_get_LogicOptions, (GameManager* __this, MethodInfo* method), "Assembly-CSharp, LogicOptions GameManager::get_LogicOptions()"); \ No newline at end of file +DO_APP_FUNC(LogicOptions*, GameManager_get_LogicOptions, (GameManager* __this, MethodInfo* method), "Assembly-CSharp, LogicOptions GameManager::get_LogicOptions()"); + +// 2023.10.24e +DO_APP_FUNC(void, FungleShipStatus_OnEnable, (FungleShipStatus* __this, MethodInfo* method), "Assembly-CSharp, System.Void FungleShipStatus::OnEnable()"); diff --git a/appdata/il2cpp-types.h b/appdata/il2cpp-types.h index 4c7ca790..4048fa13 100644 --- a/appdata/il2cpp-types.h +++ b/appdata/il2cpp-types.h @@ -8362,6 +8362,23 @@ namespace app }; #pragma endregion +#pragma region FungleShipStatus + struct FungleShipStatus__Fields { + struct ShipStatus__Fields _; + void* sporeMushrooms; + void* specialSabotage; + void* startAMBSounds; + void* _Zipline_k__BackingField; + struct Vector2 _LastBinocularPos_k__BackingField; + }; + + struct FungleShipStatus { + Il2CppClass* klass; + MonitorData* monitor; + struct FungleShipStatus__Fields fields; + }; +#pragma endregion + #pragma region DoorBreakerGame struct DoorBreakerGame__Fields { struct Minigame__Fields _; diff --git a/gui/tabs/doors_tab.cpp b/gui/tabs/doors_tab.cpp index aa58e10a..70a6ac07 100644 --- a/gui/tabs/doors_tab.cpp +++ b/gui/tabs/doors_tab.cpp @@ -13,9 +13,12 @@ namespace DoorsTab { if (ImGui::BeginTabItem("Doors")) { ImGui::BeginChild("doors#list", ImVec2(200, 0) * State.dpiScale, true); bool shouldEndListBox = ImGui::ListBoxHeader("###doors#list", ImVec2(200, 150) * State.dpiScale); - for (size_t i = 0; i < State.mapDoors.size(); i++) { - auto systemType = State.mapDoors[i]; - if (systemType == SystemTypes__Enum::Decontamination || systemType == SystemTypes__Enum::Decontamination2) continue; + for (auto systemType : State.mapDoors) { + if (systemType == SystemTypes__Enum::Decontamination + || systemType == SystemTypes__Enum::Decontamination2 + || systemType == SystemTypes__Enum::Decontamination3) { + continue; + } auto plainDoor = GetPlainDoorByRoom(systemType); if (!(std::find(State.pinnedDoors.begin(), State.pinnedDoors.end(), systemType) == State.pinnedDoors.end())) { @@ -71,7 +74,9 @@ namespace DoorsTab { { if (std::find(State.pinnedDoors.begin(), State.pinnedDoors.end(), door) == State.pinnedDoors.end()) { - if(door != SystemTypes__Enum::Decontamination && door != SystemTypes__Enum::Decontamination2) + if(door != SystemTypes__Enum::Decontamination + && door != SystemTypes__Enum::Decontamination2 + && door != SystemTypes__Enum::Decontamination3) State.rpcQueue.push(new RpcCloseDoorsOfType(door, true)); } } diff --git a/gui/tabs/host_tab.cpp b/gui/tabs/host_tab.cpp index ccacc15f..f005302a 100644 --- a/gui/tabs/host_tab.cpp +++ b/gui/tabs/host_tab.cpp @@ -85,7 +85,7 @@ namespace HostTab { // AU v2022.8.24 has been able to change maps in lobby. State.mapHostChoice = options.GetByte(app::ByteOptionNames__Enum::MapId); - State.mapHostChoice = std::clamp(State.mapHostChoice, 0, 4); + State.mapHostChoice = std::clamp(State.mapHostChoice, 0, (int)MAP_NAMES.size()-1); if (CustomListBoxInt("Map", &State.mapHostChoice, MAP_NAMES, 75 * State.dpiScale)) { if (!IsInGame()) { if (State.mapHostChoice == 3) { diff --git a/gui/tabs/host_tab.h b/gui/tabs/host_tab.h index 4ccb4d5c..f88a06ae 100644 --- a/gui/tabs/host_tab.h +++ b/gui/tabs/host_tab.h @@ -3,7 +3,7 @@ #include "utility.h" namespace HostTab { - const std::vector MAP_NAMES = { "The Skeld", "Mira HQ", "Polus", "Dleks", "Airship" }; + const std::vector MAP_NAMES = { "The Skeld", "Mira HQ", "Polus", "Dleks", "Airship", "The Fungle" }; const std::vector IMPOSTOR_AMOUNTS = { "1", "2", "3" }; const std::vector ROLE_NAMES = { "Random", "Crewmate", "Scientist", "Engineer", "Imposter", "Shapeshifter" }; void Render(); diff --git a/gui/tabs/sabotage_tab.cpp b/gui/tabs/sabotage_tab.cpp index bd2b2d6c..5d90836e 100644 --- a/gui/tabs/sabotage_tab.cpp +++ b/gui/tabs/sabotage_tab.cpp @@ -23,7 +23,8 @@ namespace SabotageTab { if (ImGui::Button("Sabotage Lights")) { State.rpcQueue.push(new RpcRepairSystem(SystemTypes__Enum::Sabotage, SystemTypes__Enum::Electrical)); } - if (State.mapType == Settings::MapType::Ship || State.mapType == Settings::MapType::Hq) { + if (State.mapType == Settings::MapType::Ship || State.mapType == Settings::MapType::Hq + || State.mapType == Settings::MapType::Fungle) { if (ImGui::Button("Sabotage Reactor")) { State.rpcQueue.push(new RpcRepairSystem(SystemTypes__Enum::Sabotage, SystemTypes__Enum::Reactor)); } @@ -41,6 +42,11 @@ namespace SabotageTab { State.rpcQueue.push(new RpcRepairSystem(SystemTypes__Enum::Sabotage, SystemTypes__Enum::LifeSupp)); } } + if (State.mapType == Settings::MapType::Fungle) { + if (ImGui::Button("Sabotage Mushroom Mixup")) { + State.rpcQueue.push(new RpcRepairSystem(SystemTypes__Enum::Sabotage, SystemTypes__Enum::MushroomMixupSabotage)); + } + } if (ImGui::Button("Sabotage Comms")) { State.rpcQueue.push(new RpcRepairSystem(SystemTypes__Enum::Sabotage, SystemTypes__Enum::Comms)); } diff --git a/hooks/DirectX.cpp b/hooks/DirectX.cpp index 060ba7ff..03738d28 100644 --- a/hooks/DirectX.cpp +++ b/hooks/DirectX.cpp @@ -153,6 +153,7 @@ bool ImGuiInitialization(IDXGISwapChain* pSwapChain) { maps.push_back({ D3D11Image(Resource(IDB_PNG2), pDevice), 115.F, 240.F, 9.25F }); maps.push_back({ D3D11Image(Resource(IDB_PNG3), pDevice), 8.F, 21.F, 10.F }); maps.push_back({ D3D11Image(Resource(IDB_PNG4), pDevice), 162.F, 107.F, 6.F }); + maps.push_back({ D3D11Image(Resource(IDB_PNG15), pDevice), 252.F, 140.F, 9.F }); icons.insert({ ICON_TYPES::VENT_IN, { D3D11Image(Resource(IDB_PNG5), pDevice), 0.02f }}); icons.insert({ ICON_TYPES::VENT_OUT, { D3D11Image(Resource(IDB_PNG6), pDevice), 0.02f }}); diff --git a/hooks/FungleShipStatus.cpp b/hooks/FungleShipStatus.cpp new file mode 100644 index 00000000..b5e1cc20 --- /dev/null +++ b/hooks/FungleShipStatus.cpp @@ -0,0 +1,35 @@ +#include "pch-il2cpp.h" +#include "_hooks.h" +#include "state.hpp" +#include "logger.h" +#include "utility.h" +#include "replay.hpp" +#include "profiler.h" + +void dFungleShipStatus_OnEnable(FungleShipStatus* __this, MethodInfo* method) +{ + FungleShipStatus_OnEnable(__this, method); + + Replay::Reset(); + + State.MatchStart = std::chrono::system_clock::now(); + State.MatchCurrent = State.MatchStart; + + State.selectedDoor = SystemTypes__Enum::Hallway; + State.mapDoors.clear(); + State.pinnedDoors.clear(); + + il2cpp::Array allDoors = __this->fields._.AllDoors; + + for (auto door : allDoors) { + if (std::find(State.mapDoors.begin(), State.mapDoors.end(), door->fields.Room) == State.mapDoors.end()) + State.mapDoors.push_back(door->fields.Room); + } + + std::sort(State.mapDoors.begin(), State.mapDoors.end()); + + State.mapType = Settings::MapType::Fungle; + + State.userName = GetPlayerName(); + ResetOriginalAppearance(); +} \ No newline at end of file diff --git a/hooks/_hooks.cpp b/hooks/_hooks.cpp index 939fefb8..9d12ee74 100644 --- a/hooks/_hooks.cpp +++ b/hooks/_hooks.cpp @@ -156,6 +156,7 @@ void DetourInitilization() { HOOKFUNC(GameOptionsManager_set_CurrentGameOptions); HOOKFUNC(ExileController_ReEnableGameplay); HOOKFUNC(SabotageSystemType_SetInitialSabotageCooldown); + HOOKFUNC(FungleShipStatus_OnEnable); if (!HookFunction(&(PVOID&)oPresent, dPresent, "D3D_PRESENT_FUNCTION")) return; @@ -237,6 +238,7 @@ void DetourUninitialization() UNHOOKFUNC(GameOptionsManager_set_CurrentGameOptions); UNHOOKFUNC(ExileController_ReEnableGameplay); UNHOOKFUNC(SabotageSystemType_SetInitialSabotageCooldown); + UNHOOKFUNC(FungleShipStatus_OnEnable); if (DetourDetach(&(PVOID&)oPresent, dPresent) != 0) return; diff --git a/hooks/_hooks.h b/hooks/_hooks.h index 49f69b44..af6d17db 100644 --- a/hooks/_hooks.h +++ b/hooks/_hooks.h @@ -73,3 +73,4 @@ bool dPlayerPurchasesData_GetPurchase(PlayerPurchasesData* __this, String* itemK void dGameOptionsManager_set_CurrentGameOptions(GameOptionsManager* __this, IGameOptions* value, MethodInfo* method); void dExileController_ReEnableGameplay(ExileController* __this, MethodInfo* method); void dSabotageSystemType_SetInitialSabotageCooldown(SabotageSystemType* __this, MethodInfo* method); +void dFungleShipStatus_OnEnable(FungleShipStatus* __this, MethodInfo* method); diff --git a/resources/resource_data.h b/resources/resource_data.h index d8760042..f42dabd5 100644 --- a/resources/resource_data.h +++ b/resources/resource_data.h @@ -16,12 +16,13 @@ #define IDB_PNG12 112 #define IDB_PNG13 113 #define IDB_PNG14 114 +#define IDB_PNG15 115 // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 115 +#define _APS_NEXT_RESOURCE_VALUE 116 #define _APS_NEXT_COMMAND_VALUE 40001 #define _APS_NEXT_CONTROL_VALUE 1001 #define _APS_NEXT_SYMED_VALUE 101 diff --git a/resources/resource_data.rc b/resources/resource_data.rc index 52d6986b..9458ce4c 100644 --- a/resources/resource_data.rc +++ b/resources/resource_data.rc @@ -78,6 +78,8 @@ IDB_PNG13 PNG "play.png" IDB_PNG14 PNG "pause.png" +IDB_PNG15 PNG "the_fungle.png" + #endif // English (United States) resources ///////////////////////////////////////////////////////////////////////////// diff --git a/resources/the_fungle.png b/resources/the_fungle.png new file mode 100644 index 0000000000000000000000000000000000000000..e9a47c1b2344736e30991e2c3717d67c6433951e GIT binary patch literal 36983 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 WvO+itSyX5M0000(taskType)); } @@ -431,7 +436,10 @@ const char* TranslateSystemTypes(SystemTypes__Enum systemType) { "MedBay", "Security", "Weapons", "Lower Engine", "Communications", "Ship Tasks", "Doors", "Sabotage", "Decontamination", "Launchpad", "Locker Room", "Laboratory", "Balcony", "Office", "Greenhouse", "Dropship", "Decontamination", "Outside", "Specimen Room", "Boiler Room", "Vault Room", "Cockpit", "Armory", "Kitchen", "Viewing Deck", "Hall Of Portraits", "Cargo Bay", "Ventilation", "Showers", "Engine Room", "The Brig", "Meeting Room", "Records Room", "Lounge Room", "Gap Room", "Main Hall", "Medical", - "Decontamination" }; + "Decontamination", + // 2023.10.24 added + "Zipline", "Mining Pit", "Fishing Dock", "Rec Room", "Lookout", "Beach", "Highlands", "Jungle", "Sleeping Quarters", "Mushroom Mixup Sabotage", "Heli Sabotage", + }; return SYSTEM_TRANSLATIONS.at(static_cast(systemType)); } From 9057687ca94274e1e2df20fd080fc774e759c989 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=99=AF=E5=A4=A7=E4=BE=A0?= Date: Fri, 27 Oct 2023 22:17:54 +0800 Subject: [PATCH 4/9] doors --- NatvisFile.natvis | 2 +- appdata/il2cpp-functions.h | 2 ++ appdata/il2cpp-types.h | 64 +++++++++++++++++++++----------------- gui/tabs/doors_tab.cpp | 21 ++++++++++--- hooks/DirectX.cpp | 2 +- hooks/Doors.cpp | 7 +++++ hooks/PlainDoor.cpp | 44 ++++++++++++++++++-------- hooks/PlayerControl.cpp | 5 +++ hooks/_hooks.cpp | 4 +++ hooks/_hooks.h | 2 ++ used_types.txt | 3 ++ user/utility.cpp | 9 +++--- user/utility.h | 5 +-- 13 files changed, 115 insertions(+), 55 deletions(-) diff --git a/NatvisFile.natvis b/NatvisFile.natvis index ca85c6f7..5aac2dc5 100644 --- a/NatvisFile.natvis +++ b/NatvisFile.natvis @@ -99,7 +99,7 @@ - + diff --git a/appdata/il2cpp-functions.h b/appdata/il2cpp-functions.h index ef9aeef8..83207ae4 100644 --- a/appdata/il2cpp-functions.h +++ b/appdata/il2cpp-functions.h @@ -243,3 +243,5 @@ DO_APP_FUNC(LogicOptions*, GameManager_get_LogicOptions, (GameManager* __this, M // 2023.10.24e DO_APP_FUNC(void, FungleShipStatus_OnEnable, (FungleShipStatus* __this, MethodInfo* method), "Assembly-CSharp, System.Void FungleShipStatus::OnEnable()"); +DO_APP_FUNC(void, MushroomWallDoor_SetDoorway, (MushroomWallDoor* __this, bool open, MethodInfo* method), "Assembly-CSharp, System.Void MushroomWallDoor::SetDoorway(System.Boolean)"); +DO_APP_FUNC(void, MushroomDoorSabotageMinigame_Begin, (MushroomDoorSabotageMinigame* __this, PlayerTask* task, MethodInfo* method), "Assembly-CSharp, System.Void MushroomDoorSabotageMinigame::Begin(PlayerTask)"); diff --git a/appdata/il2cpp-types.h b/appdata/il2cpp-types.h index 4048fa13..3456acf2 100644 --- a/appdata/il2cpp-types.h +++ b/appdata/il2cpp-types.h @@ -8419,6 +8419,27 @@ namespace app }; #pragma endregion +#pragma region MushroomDoorSabotageMinigame + struct MushroomDoorSabotageMinigame__Fields { + struct Minigame__Fields _; + void* mushroomInvisibleSeconds; + void* mushroomVisibleSeconds; + struct TextMeshPro* counterText; + void* spawnPoints; + void* mushroomVariants; + struct OpenableDoor* myDoor; + int32_t mushroomWhackCount; + void* spawnPointBag; + void* mushrooms; + }; + + struct MushroomDoorSabotageMinigame { + Il2CppClass* klass; + MonitorData* monitor; + struct MushroomDoorSabotageMinigame__Fields fields; + }; +#pragma endregion + #pragma region SabotageTask struct SabotageTask__Fields { @@ -9769,39 +9790,26 @@ namespace app float size; }; - struct PlainDoor - { - struct PlainDoor__Class* klass; - void* monitor; + struct PlainDoor { + Il2CppClass* klass; + MonitorData* monitor; struct PlainDoor__Fields fields; }; - struct PlainDoor__VTable - { - VirtualInvokeData Equals; - VirtualInvokeData Finalize; - VirtualInvokeData GetHashCode; - VirtualInvokeData ToString; - VirtualInvokeData SetDoorway; - VirtualInvokeData get_IsOpen; - VirtualInvokeData Serialize; - VirtualInvokeData Deserialize; - VirtualInvokeData DoUpdate; - VirtualInvokeData Start; - }; - - struct PlainDoor__StaticFields - { + struct MushroomWallDoor__Fields { + struct OpenableDoor__Fields _; + void* wallCollider; + struct Collider2D* shadowColl; + void* mushrooms; + void* openSound; + void* closeSound; + bool open; }; - struct PlainDoor__Class - { - Il2CppClass_0 _0; - Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets; - struct PlainDoor__StaticFields* static_fields; - const Il2CppRGCTXData* rgctx_data; - Il2CppClass_1 _1; - struct PlainDoor__VTable vtable; + struct MushroomWallDoor { + Il2CppClass* klass; + MonitorData* monitor; + struct MushroomWallDoor__Fields fields; }; #pragma endregion diff --git a/gui/tabs/doors_tab.cpp b/gui/tabs/doors_tab.cpp index 70a6ac07..43068f3e 100644 --- a/gui/tabs/doors_tab.cpp +++ b/gui/tabs/doors_tab.cpp @@ -6,6 +6,8 @@ #include "state.hpp" #include "utility.h" +using namespace std::string_view_literals; + namespace DoorsTab { void Render() { GameOptions options; @@ -19,7 +21,17 @@ namespace DoorsTab { || systemType == SystemTypes__Enum::Decontamination3) { continue; } - auto plainDoor = GetPlainDoorByRoom(systemType); + bool isOpen; + auto openableDoor = GetOpenableDoorByRoom(systemType); + if ("PlainDoor"sv == openableDoor->klass->parent->name + || "PlainDoor"sv == openableDoor->klass->name) { + isOpen = reinterpret_cast(openableDoor)->fields.Open; + } else if ("MushroomWallDoor"sv == openableDoor->klass->name) { + isOpen = reinterpret_cast(openableDoor)->fields.open; + } + else { + continue; + } if (!(std::find(State.pinnedDoors.begin(), State.pinnedDoors.end(), systemType) == State.pinnedDoors.end())) { ImGui::PushStyleColor(ImGuiCol_Text, { 0.9f, 0.1f, 0.25f, 1.f }); @@ -27,7 +39,7 @@ namespace DoorsTab { State.selectedDoor = systemType; ImGui::PopStyleColor(1); } - else if (!plainDoor->fields.Open) + else if (!isOpen) { ImGui::PushStyleColor(ImGuiCol_Text, { 0.85f, 0.2f, 0.5f, 1.f }); if (ImGui::Selectable(TranslateSystemTypes(systemType), State.selectedDoor == systemType)) @@ -87,8 +99,6 @@ namespace DoorsTab { } ImGui::NewLine(); if (State.selectedDoor != SystemTypes__Enum::Hallway) { - auto plainDoor = GetPlainDoorByRoom(State.selectedDoor); - if (ImGui::Button("Close Door")) { State.rpcQueue.push(new RpcCloseDoorsOfType(State.selectedDoor, false)); } @@ -104,7 +114,8 @@ namespace DoorsTab { } } } - if (State.mapType == Settings::MapType::Pb || State.mapType == Settings::MapType::Airship) + if (State.mapType == Settings::MapType::Pb || State.mapType == Settings::MapType::Airship + || State.mapType == Settings::MapType::Fungle) { ImGui::Dummy(ImVec2(4, 4) * State.dpiScale); if (ImGui::Checkbox("Auto Open Doors", &State.AutoOpenDoors)) { diff --git a/hooks/DirectX.cpp b/hooks/DirectX.cpp index 03738d28..653f0253 100644 --- a/hooks/DirectX.cpp +++ b/hooks/DirectX.cpp @@ -153,7 +153,7 @@ bool ImGuiInitialization(IDXGISwapChain* pSwapChain) { maps.push_back({ D3D11Image(Resource(IDB_PNG2), pDevice), 115.F, 240.F, 9.25F }); maps.push_back({ D3D11Image(Resource(IDB_PNG3), pDevice), 8.F, 21.F, 10.F }); maps.push_back({ D3D11Image(Resource(IDB_PNG4), pDevice), 162.F, 107.F, 6.F }); - maps.push_back({ D3D11Image(Resource(IDB_PNG15), pDevice), 252.F, 140.F, 9.F }); + maps.push_back({ D3D11Image(Resource(IDB_PNG15), pDevice), 237.F, 140.F, 8.5F }); icons.insert({ ICON_TYPES::VENT_IN, { D3D11Image(Resource(IDB_PNG5), pDevice), 0.02f }}); icons.insert({ ICON_TYPES::VENT_OUT, { D3D11Image(Resource(IDB_PNG6), pDevice), 0.02f }}); diff --git a/hooks/Doors.cpp b/hooks/Doors.cpp index 815a3cef..e13efc7d 100644 --- a/hooks/Doors.cpp +++ b/hooks/Doors.cpp @@ -10,6 +10,13 @@ void dPlainDoor_SetDoorway(PlainDoor* __this, bool open, MethodInfo* method) { app::PlainDoor_SetDoorway(__this, open, method); } +void dMushroomWallDoor_SetDoorway(MushroomWallDoor* __this, bool open, MethodInfo* method) { + if (open && (std::find(State.pinnedDoors.begin(), State.pinnedDoors.end(), __this->fields._.Room) != State.pinnedDoors.end())) { + State.rpcQueue.push(new RpcCloseDoorsOfType(__this->fields._.Room, false)); + } + app::MushroomWallDoor_SetDoorway(__this, open, method); +} + bool dAutoOpenDoor_DoUpdate(AutoOpenDoor* __this, float dt, MethodInfo* method) { if ((std::find(State.pinnedDoors.begin(), State.pinnedDoors.end(), __this->fields._._.Room) != State.pinnedDoors.end()) && __this->fields.ClosedTimer < 1.5f) { State.rpcQueue.push(new RpcCloseDoorsOfType(__this->fields._._.Room, false)); diff --git a/hooks/PlainDoor.cpp b/hooks/PlainDoor.cpp index 5c33f7bc..07572bf6 100644 --- a/hooks/PlainDoor.cpp +++ b/hooks/PlainDoor.cpp @@ -3,31 +3,49 @@ #include "state.hpp" #include +using namespace std::string_view_literals; + +static bool OpenDoor(OpenableDoor* door) { + if ("PlainDoor"sv == door->klass->name) { + app::PlainDoor_SetDoorway(reinterpret_cast(door), true, {}); + } + else if ("MushroomWallDoor"sv == door->klass->name) { + app::MushroomWallDoor_SetDoorway(reinterpret_cast(door), true, {}); + } + else { + return false; + } + State.rpcQueue.push(new RpcRepairSystem(SystemTypes__Enum::Doors, door->fields.Id | 64)); + return true; +} + +void dMushroomDoorSabotageMinigame_Begin(MushroomDoorSabotageMinigame* __this, PlayerTask* task, MethodInfo* method) { + if (State.AutoOpenDoors) { + if (OpenDoor(__this->fields.myDoor)) { + Minigame_Close((Minigame*)__this, {}); + return; + } + } + app::MushroomDoorSabotageMinigame_Begin(__this, task, method); +} + void dDoorBreakerGame_Start(DoorBreakerGame* __this, MethodInfo* method) { if (State.AutoOpenDoors) { - static Il2CppClass* klassPlainDoor = get_class("Assembly-CSharp, PlainDoor"); - if (il2cpp_class_is_assignable_from(klassPlainDoor, __this->fields.MyDoor->klass)) { - State.rpcQueue.push(new RpcRepairSystem(SystemTypes__Enum::Doors, __this->fields.MyDoor->fields.Id | 64)); - PlainDoor_SetDoorway((PlainDoor*)__this->fields.MyDoor, true, NULL); - Minigame_Close((Minigame*)__this, NULL); + if (OpenDoor(__this->fields.MyDoor)) { + Minigame_Close((Minigame*)__this, {}); return; } - // TODO 231024 } DoorBreakerGame_Start(__this, method); } void dDoorCardSwipeGame_Begin(DoorCardSwipeGame* __this, PlayerTask* playerTask, MethodInfo* method) { if (State.AutoOpenDoors) { - static Il2CppClass* klassPlainDoor = get_class("Assembly-CSharp, PlainDoor"); - if (il2cpp_class_is_assignable_from(klassPlainDoor, __this->fields.MyDoor->klass)) { - __this->fields.State = DoorCardSwipeGame_TaskStages__Enum::Inserted; - State.rpcQueue.push(new RpcRepairSystem(SystemTypes__Enum::Doors, __this->fields.MyDoor->fields.Id | 64)); - PlainDoor_SetDoorway((PlainDoor*)__this->fields.MyDoor, true, NULL); - Minigame_Close((Minigame*)__this, NULL); + __this->fields.State = DoorCardSwipeGame_TaskStages__Enum::Inserted; + if (OpenDoor(__this->fields.MyDoor)) { + Minigame_Close((Minigame*)__this, {}); return; } - // TODO 231024 } DoorCardSwipeGame_Begin(__this, playerTask, method); } \ No newline at end of file diff --git a/hooks/PlayerControl.cpp b/hooks/PlayerControl.cpp index 1e6ca445..24285aa9 100644 --- a/hooks/PlayerControl.cpp +++ b/hooks/PlayerControl.cpp @@ -312,6 +312,11 @@ void dPlayerControl_RpcSyncSettings(PlayerControl* __this, Byte__Array* optionsB void dPlayerControl_MurderPlayer(PlayerControl* __this, PlayerControl* target, MurderResultFlags__Enum resultFlags, MethodInfo* method) { + if (static_cast(resultFlags) & static_cast(MurderResultFlags__Enum::FailedError)) { + app::PlayerControl_MurderPlayer(__this, target, resultFlags, method); + return; + } + if (PlayerIsImpostor(GetPlayerData(__this)) && PlayerIsImpostor(GetPlayerData(target))) { synchronized(Replay::replayEventMutex) { State.liveReplayEvents.emplace_back(std::make_unique(GetEventPlayerControl(__this).value(), CHEAT_ACTIONS::CHEAT_KILL_IMPOSTOR)); diff --git a/hooks/_hooks.cpp b/hooks/_hooks.cpp index 9d12ee74..1ce6af31 100644 --- a/hooks/_hooks.cpp +++ b/hooks/_hooks.cpp @@ -157,6 +157,8 @@ void DetourInitilization() { HOOKFUNC(ExileController_ReEnableGameplay); HOOKFUNC(SabotageSystemType_SetInitialSabotageCooldown); HOOKFUNC(FungleShipStatus_OnEnable); + HOOKFUNC(MushroomWallDoor_SetDoorway); + HOOKFUNC(MushroomDoorSabotageMinigame_Begin); if (!HookFunction(&(PVOID&)oPresent, dPresent, "D3D_PRESENT_FUNCTION")) return; @@ -239,6 +241,8 @@ void DetourUninitialization() UNHOOKFUNC(ExileController_ReEnableGameplay); UNHOOKFUNC(SabotageSystemType_SetInitialSabotageCooldown); UNHOOKFUNC(FungleShipStatus_OnEnable); + UNHOOKFUNC(MushroomWallDoor_SetDoorway); + UNHOOKFUNC(MushroomDoorSabotageMinigame_Begin); if (DetourDetach(&(PVOID&)oPresent, dPresent) != 0) return; diff --git a/hooks/_hooks.h b/hooks/_hooks.h index af6d17db..f161505f 100644 --- a/hooks/_hooks.h +++ b/hooks/_hooks.h @@ -74,3 +74,5 @@ void dGameOptionsManager_set_CurrentGameOptions(GameOptionsManager* __this, IGam void dExileController_ReEnableGameplay(ExileController* __this, MethodInfo* method); void dSabotageSystemType_SetInitialSabotageCooldown(SabotageSystemType* __this, MethodInfo* method); void dFungleShipStatus_OnEnable(FungleShipStatus* __this, MethodInfo* method); +void dMushroomWallDoor_SetDoorway(MushroomWallDoor* __this, bool open, MethodInfo* method); +void dMushroomDoorSabotageMinigame_Begin(MushroomDoorSabotageMinigame* __this, PlayerTask* task, MethodInfo* method); diff --git a/used_types.txt b/used_types.txt index ac07ea4f..fa6bd65b 100644 --- a/used_types.txt +++ b/used_types.txt @@ -222,3 +222,6 @@ FreeChatInputField__Fields FreeChatInputField MurderResultFlags__Enum FungleShipStatus +OpenableDoor +MushroomWallDoor +MushroomDoorSabotageMinigame diff --git a/user/utility.cpp b/user/utility.cpp index 2714d24c..5b7de1e0 100644 --- a/user/utility.cpp +++ b/user/utility.cpp @@ -288,20 +288,19 @@ PlayerControl* GetPlayerControlById(Game::PlayerId id) { return NULL; } -PlainDoor* GetPlainDoorByRoom(SystemTypes__Enum room) { - for (auto door : il2cpp::Array((*Game::pShipStatus)->fields.AllDoors)) +OpenableDoor* GetOpenableDoorByRoom(SystemTypes__Enum room) { + for (auto door : GetAllOpenableDoors()) { if (door->fields.Room == room) { - // TODO 231024 - return (PlainDoor*)door; + return door; } } return nullptr; } -il2cpp::Array GetAllPlainDoors() { +il2cpp::Array GetAllOpenableDoors() { return (*Game::pShipStatus)->fields.AllDoors; } diff --git a/user/utility.h b/user/utility.h index d6bed85a..8f15eb22 100644 --- a/user/utility.h +++ b/user/utility.h @@ -147,8 +147,9 @@ GameData_PlayerInfo* GetPlayerData(PlayerControl* player); Vector2 GetTrueAdjustedPosition(PlayerControl* player); GameData_PlayerInfo* GetPlayerDataById(Game::PlayerId id); PlayerControl* GetPlayerControlById(Game::PlayerId id); -PlainDoor* GetPlainDoorByRoom(SystemTypes__Enum room); -il2cpp::Array GetAllPlainDoors(); +// MushroomWallDoor or PlainDoor +OpenableDoor* GetOpenableDoorByRoom(SystemTypes__Enum room); +il2cpp::Array GetAllOpenableDoors(); il2cpp::List GetAllPlayerControl(); il2cpp::List GetAllPlayerData(); il2cpp::Array GetAllDeadBodies(); From 8c094b424c919675a3085ec3a46f2f918e7ff813 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=99=AF=E5=A4=A7=E4=BE=A0?= Date: Sat, 28 Oct 2023 00:24:57 +0800 Subject: [PATCH 5/9] delete dleks --- appdata/il2cpp-functions.h | 2 +- gui/tabs/host_tab.cpp | 10 ++++++++-- gui/tabs/host_tab.h | 2 +- hooks/Dleks.cpp | 3 ++- hooks/ShipStatus.cpp | 4 ++-- hooks/_hooks.cpp | 4 ++-- hooks/_hooks.h | 2 +- 7 files changed, 17 insertions(+), 10 deletions(-) diff --git a/appdata/il2cpp-functions.h b/appdata/il2cpp-functions.h index 83207ae4..98266106 100644 --- a/appdata/il2cpp-functions.h +++ b/appdata/il2cpp-functions.h @@ -145,7 +145,7 @@ DO_APP_FUNC(void, InnerNetClient_FinishRpcImmediately, (InnerNetClient* __this, DO_APP_FUNC(void, MessageExtensions_WriteNetObject, (MessageWriter* self, InnerNetObject* obj, MethodInfo* method), "Assembly-CSharp, System.Void InnerNet.MessageExtensions::WriteNetObject(Hazel.MessageWriter, InnerNet.InnerNetObject)"); -DO_APP_FUNC(bool, Constants_ShouldFlipSkeld, (MethodInfo* method), "Assembly-CSharp, System.Boolean Constants::ShouldFlipSkeld()"); +//DO_APP_FUNC(bool, Constants_ShouldFlipSkeld, (MethodInfo* method), "Assembly-CSharp, System.Boolean Constants::ShouldFlipSkeld()"); DO_APP_FUNC(void, LobbyBehaviour_Start, (LobbyBehaviour* __this, MethodInfo* method), "Assembly-CSharp, System.Void LobbyBehaviour::Start()"); diff --git a/gui/tabs/host_tab.cpp b/gui/tabs/host_tab.cpp index f005302a..a014f125 100644 --- a/gui/tabs/host_tab.cpp +++ b/gui/tabs/host_tab.cpp @@ -85,17 +85,23 @@ namespace HostTab { // AU v2022.8.24 has been able to change maps in lobby. State.mapHostChoice = options.GetByte(app::ByteOptionNames__Enum::MapId); + if (State.mapHostChoice > 3) + State.mapHostChoice--; State.mapHostChoice = std::clamp(State.mapHostChoice, 0, (int)MAP_NAMES.size()-1); if (CustomListBoxInt("Map", &State.mapHostChoice, MAP_NAMES, 75 * State.dpiScale)) { if (!IsInGame()) { - if (State.mapHostChoice == 3) { + // disable flip + /*if (State.mapHostChoice == 3) { options.SetByte(app::ByteOptionNames__Enum::MapId, 0); State.FlipSkeld = true; } else { options.SetByte(app::ByteOptionNames__Enum::MapId, State.mapHostChoice); State.FlipSkeld = false; - } + }*/ + auto id = State.mapHostChoice; + if (id >= 3) id++; + options.SetByte(app::ByteOptionNames__Enum::MapId, id); } } ImGui::Dummy(ImVec2(7, 7) * State.dpiScale); diff --git a/gui/tabs/host_tab.h b/gui/tabs/host_tab.h index f88a06ae..f297b407 100644 --- a/gui/tabs/host_tab.h +++ b/gui/tabs/host_tab.h @@ -3,7 +3,7 @@ #include "utility.h" namespace HostTab { - const std::vector MAP_NAMES = { "The Skeld", "Mira HQ", "Polus", "Dleks", "Airship", "The Fungle" }; + const std::vector MAP_NAMES = { "The Skeld", "Mira HQ", "Polus", /*"Dleks",*/ "Airship", "The Fungle" }; const std::vector IMPOSTOR_AMOUNTS = { "1", "2", "3" }; const std::vector ROLE_NAMES = { "Random", "Crewmate", "Scientist", "Engineer", "Imposter", "Shapeshifter" }; void Render(); diff --git a/hooks/Dleks.cpp b/hooks/Dleks.cpp index 0dc2d809..7a11b303 100644 --- a/hooks/Dleks.cpp +++ b/hooks/Dleks.cpp @@ -2,6 +2,7 @@ #include "_hooks.h" #include "state.hpp" +/* bool dConstants_ShouldFlipSkeld(MethodInfo* method) { bool orig_return = Constants_ShouldFlipSkeld(method); if (State.FlipSkeld) { @@ -12,4 +13,4 @@ bool dConstants_ShouldFlipSkeld(MethodInfo* method) { State.FlipSkeld = true; } return orig_return; -} \ No newline at end of file +}*/ \ No newline at end of file diff --git a/hooks/ShipStatus.cpp b/hooks/ShipStatus.cpp index 9d4fa0c4..9cb17226 100644 --- a/hooks/ShipStatus.cpp +++ b/hooks/ShipStatus.cpp @@ -18,10 +18,10 @@ void dShipStatus_OnEnable(ShipStatus* __this, MethodInfo* method) { Replay::Reset(); - if (Constants_ShouldFlipSkeld(NULL)) + /*if (Constants_ShouldFlipSkeld(NULL)) State.FlipSkeld = true; else - State.FlipSkeld = false; + State.FlipSkeld = false;*/ State.MatchStart = std::chrono::system_clock::now(); State.MatchCurrent = State.MatchStart; diff --git a/hooks/_hooks.cpp b/hooks/_hooks.cpp index 1ce6af31..53485415 100644 --- a/hooks/_hooks.cpp +++ b/hooks/_hooks.cpp @@ -128,7 +128,7 @@ void DetourInitilization() { HOOKFUNC(InnerNetClient_Update); HOOKFUNC(AmongUsClient_OnPlayerLeft); HOOKFUNC(CustomNetworkTransform_SnapTo); - HOOKFUNC(Constants_ShouldFlipSkeld); + //HOOKFUNC(Constants_ShouldFlipSkeld); HOOKFUNC(LobbyBehaviour_Start); HOOKFUNC(GameObject_SetActive); //HOOKFUNC(NoShadowBehaviour_LateUpdate); @@ -215,7 +215,7 @@ void DetourUninitialization() UNHOOKFUNC(InnerNetClient_Update); UNHOOKFUNC(AmongUsClient_OnPlayerLeft); UNHOOKFUNC(CustomNetworkTransform_SnapTo); - UNHOOKFUNC(Constants_ShouldFlipSkeld); + //UNHOOKFUNC(Constants_ShouldFlipSkeld); UNHOOKFUNC(LobbyBehaviour_Start); //UNHOOKFUNC(NoShadowBehaviour_LateUpdate); UNHOOKFUNC(FollowerCamera_Update); diff --git a/hooks/_hooks.h b/hooks/_hooks.h index f161505f..68faf9ca 100644 --- a/hooks/_hooks.h +++ b/hooks/_hooks.h @@ -4,7 +4,7 @@ void DetourInitilization(); void DetourUninitialization(); bool dAutoOpenDoor_DoUpdate(AutoOpenDoor* __this, float dt, MethodInfo* method); -bool dConstants_ShouldFlipSkeld(MethodInfo* method); +//bool dConstants_ShouldFlipSkeld(MethodInfo* method); void dInnerNetClient_Update(InnerNetClient* __this, MethodInfo* method); void dAmongUsClient_OnPlayerLeft(AmongUsClient* __this, ClientData* data, DisconnectReasons__Enum reason, MethodInfo* method); void dCustomNetworkTransform_SnapTo(CustomNetworkTransform* __this, Vector2 position, uint16_t minSid, MethodInfo* method); From 893d3ac3389b62f9a3fd16f4736b703a56c220e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=99=AF=E5=A4=A7=E4=BE=A0?= Date: Sat, 28 Oct 2023 01:03:45 +0800 Subject: [PATCH 6/9] add new role --- user/utility.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/user/utility.cpp b/user/utility.cpp index 5b7de1e0..d42b4903 100644 --- a/user/utility.cpp +++ b/user/utility.cpp @@ -712,6 +712,7 @@ Color GetRoleColor(RoleBehaviour* roleBehaviour) { switch (roleBehaviour->fields.Role) { default: case RoleTypes__Enum::Crewmate: + case RoleTypes__Enum::CrewmateGhost: c = Palette__TypeInfo->static_fields->White; break; case RoleTypes__Enum::Engineer: @@ -721,6 +722,7 @@ Color GetRoleColor(RoleBehaviour* roleBehaviour) { break; case RoleTypes__Enum::Impostor: case RoleTypes__Enum::Shapeshifter: + case RoleTypes__Enum::ImpostorGhost: c = Palette__TypeInfo->static_fields->ImpostorRed; break; } @@ -738,12 +740,14 @@ std::string GetRoleName(RoleBehaviour* roleBehaviour, bool abbreviated /* = fals case RoleTypes__Enum::GuardianAngel: return (abbreviated ? "GA" : "GuardianAngel"); case RoleTypes__Enum::Impostor: + case RoleTypes__Enum::ImpostorGhost: return (abbreviated ? "Imp" : "Impostor"); case RoleTypes__Enum::Scientist: return (abbreviated ? "Sci" : "Scientist"); case RoleTypes__Enum::Shapeshifter: return (abbreviated ? "SH" : "Shapeshifter"); case RoleTypes__Enum::Crewmate: + case RoleTypes__Enum::CrewmateGhost: return (abbreviated ? "Crew" : "Crewmate"); default: return (abbreviated ? "Unk" : "Unknown"); From 104139bc90cf6010fb4a55bef68961da81ff075a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=99=AF=E5=A4=A7=E4=BE=A0?= Date: Sat, 28 Oct 2023 02:13:25 +0800 Subject: [PATCH 7/9] update --- gui/tabs/sabotage_tab.cpp | 12 ++++++------ user/utility.cpp | 28 +++++++++++++++++----------- user/utility.h | 2 +- 3 files changed, 24 insertions(+), 18 deletions(-) diff --git a/gui/tabs/sabotage_tab.cpp b/gui/tabs/sabotage_tab.cpp index 5d90836e..82f73e62 100644 --- a/gui/tabs/sabotage_tab.cpp +++ b/gui/tabs/sabotage_tab.cpp @@ -20,7 +20,12 @@ namespace SabotageTab { State.Save(); } ImGui::NewLine(); - if (ImGui::Button("Sabotage Lights")) { + if (State.mapType == Settings::MapType::Fungle) { + if (ImGui::Button("Sabotage Mushroom Mixup")) { + State.rpcQueue.push(new RpcRepairSystem(SystemTypes__Enum::Sabotage, SystemTypes__Enum::MushroomMixupSabotage)); + } + } + else if (ImGui::Button("Sabotage Lights")) { State.rpcQueue.push(new RpcRepairSystem(SystemTypes__Enum::Sabotage, SystemTypes__Enum::Electrical)); } if (State.mapType == Settings::MapType::Ship || State.mapType == Settings::MapType::Hq @@ -42,11 +47,6 @@ namespace SabotageTab { State.rpcQueue.push(new RpcRepairSystem(SystemTypes__Enum::Sabotage, SystemTypes__Enum::LifeSupp)); } } - if (State.mapType == Settings::MapType::Fungle) { - if (ImGui::Button("Sabotage Mushroom Mixup")) { - State.rpcQueue.push(new RpcRepairSystem(SystemTypes__Enum::Sabotage, SystemTypes__Enum::MushroomMixupSabotage)); - } - } if (ImGui::Button("Sabotage Comms")) { State.rpcQueue.push(new RpcRepairSystem(SystemTypes__Enum::Sabotage, SystemTypes__Enum::Comms)); } diff --git a/user/utility.cpp b/user/utility.cpp index d42b4903..8eea281e 100644 --- a/user/utility.cpp +++ b/user/utility.cpp @@ -7,6 +7,8 @@ #include "profiler.h" #include +using namespace std::string_view_literals; + EXTERN_C IMAGE_DOS_HEADER __ImageBase; int randi(int lo, int hi) { @@ -337,14 +339,16 @@ std::vector GetNormalPlayerTasks(PlayerControl* player) { return normalPlayerTasks; } -SabotageTask* GetSabotageTask(PlayerControl* player) { +Object_1* GetSabotageTask(PlayerControl* player) { static std::string sabotageTaskType = translate_type_name("SabotageTask"); auto playerTasks = GetPlayerTasks(player); for (auto playerTask : playerTasks) - if (sabotageTaskType == playerTask->klass->_0.name || sabotageTaskType == playerTask->klass->_0.parent->name) - return (SabotageTask*)playerTask; + if (sabotageTaskType == playerTask->klass->_0.name + || sabotageTaskType == playerTask->klass->_0.parent->name + || "MushroomMixupSabotageTask"sv == playerTask->klass->_0.name) + return (Object_1*)playerTask; return NULL; } @@ -375,22 +379,18 @@ void RepairSabotage(PlayerControl* player) { } } } - - if (hqHudOverrideTaskType == sabotageTask->klass->_0.name) { + else if (hqHudOverrideTaskType == sabotageTask->klass->_0.name) { State.rpcQueue.push(new RpcRepairSystem(SystemTypes__Enum::Comms, 16)); State.rpcQueue.push(new RpcRepairSystem(SystemTypes__Enum::Comms, 17)); } - - if (hudOverrideTaskType == sabotageTask->klass->_0.name) { + else if (hudOverrideTaskType == sabotageTask->klass->_0.name) { State.rpcQueue.push(new RpcRepairSystem(SystemTypes__Enum::Comms, 0)); } - - if (noOxyTaskType == sabotageTask->klass->_0.name) { + else if (noOxyTaskType == sabotageTask->klass->_0.name) { State.rpcQueue.push(new RpcRepairSystem(SystemTypes__Enum::LifeSupp, 64)); State.rpcQueue.push(new RpcRepairSystem(SystemTypes__Enum::LifeSupp, 65)); } - - if (reactorTaskType == sabotageTask->klass->_0.name) { + else if (reactorTaskType == sabotageTask->klass->_0.name) { if (State.mapType == Settings::MapType::Ship || State.mapType == Settings::MapType::Hq) { State.rpcQueue.push(new RpcRepairSystem(SystemTypes__Enum::Reactor, 64)); State.rpcQueue.push(new RpcRepairSystem(SystemTypes__Enum::Reactor, 65)); @@ -405,6 +405,12 @@ void RepairSabotage(PlayerControl* player) { State.rpcQueue.push(new RpcRepairSystem(SystemTypes__Enum::Reactor, 17)); } } + else if ("MushroomMixupSabotageTask"sv == sabotageTask->klass->_0.name) { + //State.rpcQueue.push(new RpcRepairSystem(SystemTypes__Enum::MushroomMixupSabotage, 0)); + } + else { + STREAM_ERROR("Unknown Task:" << sabotageTask->klass->_0.name); + } } void CompleteTask(NormalPlayerTask* playerTask) { diff --git a/user/utility.h b/user/utility.h index 8f15eb22..19c1219f 100644 --- a/user/utility.h +++ b/user/utility.h @@ -155,7 +155,7 @@ il2cpp::List GetAllPlayerData(); il2cpp::Array GetAllDeadBodies(); il2cpp::List GetPlayerTasks(PlayerControl* player); std::vector GetNormalPlayerTasks(PlayerControl* player); -SabotageTask* GetSabotageTask(PlayerControl* player); +Object_1* GetSabotageTask(PlayerControl* player); void RepairSabotage(PlayerControl* player); void CompleteTask(NormalPlayerTask* playerTask); const char* TranslateTaskTypes(TaskTypes__Enum taskType); From 8fbb9e41f6ee9d85ed07a0b4712b5d4a04bc0981 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=99=AF=E5=A4=A7=E4=BE=A0?= Date: Sat, 28 Oct 2023 15:26:25 +0800 Subject: [PATCH 8/9] fix null pointer dereference --- appdata/il2cpp-functions.h | 2 +- gui/tabs/settings_tab.cpp | 3 +++ hooks/PlayerControl.cpp | 54 ++++++++++++++++++++++++-------------- hooks/Vent.cpp | 20 ++++++++------ user/utility.cpp | 5 +++- 5 files changed, 55 insertions(+), 29 deletions(-) diff --git a/appdata/il2cpp-functions.h b/appdata/il2cpp-functions.h index 98266106..6575a2e1 100644 --- a/appdata/il2cpp-functions.h +++ b/appdata/il2cpp-functions.h @@ -226,7 +226,7 @@ DO_APP_FUNC(void, AchievementManager_1_UnlockAchievement, (AchievementManager_1* // 2022.10.25s DO_APP_FUNC(PlayerData*, DataManager_get_Player, (MethodInfo* method), "Assembly-CSharp, AmongUs.Data.Player.PlayerData AmongUs.Data.DataManager::get_Player()"); -DO_APP_FUNC(String*, PlayerCustomizationData_get_Name, (PlayerCustomizationData* __this, MethodInfo* method), "Assembly-CSharp, System.String AmongUs.Data.Player.PlayerCustomizationData::get_Name()"); +//DO_APP_FUNC(String*, PlayerCustomizationData_get_Name, (PlayerCustomizationData* __this, MethodInfo* method), "Assembly-CSharp, System.String AmongUs.Data.Player.PlayerCustomizationData::get_Name()"); DO_APP_FUNC(void, PlayerCustomizationData_set_Name, (PlayerCustomizationData* __this, String* value, MethodInfo* method), "Assembly-CSharp, System.Void AmongUs.Data.Player.PlayerCustomizationData::set_Name(System.String)"); DO_APP_FUNC(bool, PlayerPurchasesData_GetPurchase, (PlayerPurchasesData* __this, String* itemKey, String* bundleKey, MethodInfo* method), "Assembly-CSharp, System.Boolean PlayerPurchasesData::GetPurchase(System.String, System.String)"); DO_APP_FUNC(SettingsData*, DataManager_get_Settings, (MethodInfo* method), "Assembly-CSharp, AmongUs.Data.Settings.SettingsData AmongUs.Data.DataManager::get_Settings()"); diff --git a/gui/tabs/settings_tab.cpp b/gui/tabs/settings_tab.cpp index 494cd234..da0cc785 100644 --- a/gui/tabs/settings_tab.cpp +++ b/gui/tabs/settings_tab.cpp @@ -62,6 +62,9 @@ namespace SettingsTab { State.userName = std::string(*nameBuffer); } } + if (State.userName.empty()) { + State.userName = GetPlayerName(); + } ImGui::Dummy(ImVec2(7, 7) * State.dpiScale); ImGui::Separator(); diff --git a/hooks/PlayerControl.cpp b/hooks/PlayerControl.cpp index 24285aa9..1ebd0de3 100644 --- a/hooks/PlayerControl.cpp +++ b/hooks/PlayerControl.cpp @@ -10,14 +10,15 @@ #include void dPlayerControl_CompleteTask(PlayerControl* __this, uint32_t idx, MethodInfo* method) { - std::optional taskType = std::nullopt; + if (auto player = GetEventPlayerControl(__this)) { + std::optional taskType = std::nullopt; + auto normalPlayerTasks = GetNormalPlayerTasks(__this); + for (auto normalPlayerTask : normalPlayerTasks) + if (normalPlayerTask->fields._._Id_k__BackingField == idx) taskType = normalPlayerTask->fields._.TaskType; - auto normalPlayerTasks = GetNormalPlayerTasks(__this); - for (auto normalPlayerTask : normalPlayerTasks) - if (normalPlayerTask->fields._._Id_k__BackingField == idx) taskType = normalPlayerTask->fields._.TaskType; - - synchronized(Replay::replayEventMutex) { - State.liveReplayEvents.emplace_back(std::make_unique(GetEventPlayerControl(__this).value(), taskType, PlayerControl_GetTruePosition(__this, NULL))); + synchronized(Replay::replayEventMutex) { + State.liveReplayEvents.emplace_back(std::make_unique(player.value(), taskType, PlayerControl_GetTruePosition(__this, NULL))); + } } PlayerControl_CompleteTask(__this, idx, method); } @@ -317,15 +318,19 @@ void dPlayerControl_MurderPlayer(PlayerControl* __this, PlayerControl* target, M return; } - if (PlayerIsImpostor(GetPlayerData(__this)) && PlayerIsImpostor(GetPlayerData(target))) { + auto killer = GetEventPlayerControl(__this); + auto victim = GetEventPlayerControl(target); + if (killer && victim) { + if(PlayerIsImpostor(GetPlayerData(__this)) && PlayerIsImpostor(GetPlayerData(target))) { + synchronized(Replay::replayEventMutex) { + State.liveReplayEvents.emplace_back(std::make_unique(killer.value(), CHEAT_ACTIONS::CHEAT_KILL_IMPOSTOR)); + } + } synchronized(Replay::replayEventMutex) { - State.liveReplayEvents.emplace_back(std::make_unique(GetEventPlayerControl(__this).value(), CHEAT_ACTIONS::CHEAT_KILL_IMPOSTOR)); + State.liveReplayEvents.emplace_back(std::make_unique(killer.value(), victim.value(), PlayerControl_GetTruePosition(__this, NULL), PlayerControl_GetTruePosition(target, NULL))); + State.replayDeathTimePerPlayer[target->fields.PlayerId] = std::chrono::system_clock::now(); } } - synchronized(Replay::replayEventMutex) { - State.liveReplayEvents.emplace_back(std::make_unique(GetEventPlayerControl(__this).value(), GetEventPlayerControl(target).value(), PlayerControl_GetTruePosition(__this, NULL), PlayerControl_GetTruePosition(target, NULL))); - State.replayDeathTimePerPlayer[target->fields.PlayerId] = std::chrono::system_clock::now(); - } // ESP: Reset Kill Cooldown if (__this->fields._.OwnerId != (*Game::pAmongUsClient)->fields._.ClientId) { @@ -355,8 +360,11 @@ void dPlayerControl_MurderPlayer(PlayerControl* __this, PlayerControl* target, M void dPlayerControl_StartMeeting(PlayerControl* __this, GameData_PlayerInfo* target, MethodInfo* method) { - synchronized(Replay::replayEventMutex) { - State.liveReplayEvents.emplace_back(std::make_unique(GetEventPlayerControl(__this).value(), GetEventPlayer(target), PlayerControl_GetTruePosition(__this, NULL), GetTargetPosition(target))); + if (auto player = GetEventPlayerControl(__this); + player && target) { + synchronized(Replay::replayEventMutex) { + State.liveReplayEvents.emplace_back(std::make_unique(player.value(), GetEventPlayer(target), PlayerControl_GetTruePosition(__this, NULL), GetTargetPosition(target))); + } } app::PlayerControl_StartMeeting(__this, target, method); } @@ -419,15 +427,23 @@ void dGameObject_SetActive(GameObject* __this, bool value, MethodInfo* method) } void dPlayerControl_Shapeshift(PlayerControl* __this, PlayerControl* target, bool animate, MethodInfo* method) { - synchronized(Replay::replayEventMutex) { - State.liveReplayEvents.emplace_back(std::make_unique(GetEventPlayerControl(__this).value(), GetEventPlayerControl(target).value())); + auto source_player = GetEventPlayerControl(__this); + auto target_player = GetEventPlayerControl(target); + if (source_player && target_player) { + synchronized(Replay::replayEventMutex) { + State.liveReplayEvents.emplace_back(std::make_unique(source_player.value(), target_player.value())); + } } PlayerControl_Shapeshift(__this, target, animate, method); } void dPlayerControl_ProtectPlayer(PlayerControl* __this, PlayerControl* target, int32_t colorId, MethodInfo* method) { - synchronized(Replay::replayEventMutex) { - State.liveReplayEvents.emplace_back(std::make_unique(GetEventPlayerControl(__this).value(), GetEventPlayerControl(target).value())); + auto source_player = GetEventPlayerControl(__this); + auto target_player = GetEventPlayerControl(target); + if (source_player && target_player) { + synchronized(Replay::replayEventMutex) { + State.liveReplayEvents.emplace_back(std::make_unique(source_player.value(), target_player.value())); + } } PlayerControl_ProtectPlayer(__this, target, colorId, method); } diff --git a/hooks/Vent.cpp b/hooks/Vent.cpp index bd95ed7d..80ea1bdc 100644 --- a/hooks/Vent.cpp +++ b/hooks/Vent.cpp @@ -33,19 +33,23 @@ float dVent_CanUse(Vent* __this, GameData_PlayerInfo* pc, bool* canUse, bool* co }; void dVent_EnterVent(Vent* __this, PlayerControl* pc, MethodInfo * method) { - auto ventVector = app::Transform_get_position(app::Component_get_transform((Component_1*)__this, NULL), NULL); - app::Vector2 ventVector2D = {ventVector.x, ventVector.y}; - synchronized(Replay::replayEventMutex) { - State.liveReplayEvents.emplace_back(std::make_unique(GetEventPlayerControl(pc).value(), ventVector2D, VENT_ACTIONS::VENT_ENTER)); + if (auto player = GetEventPlayerControl(pc)) { + auto ventVector = app::Transform_get_position(app::Component_get_transform((Component_1*)__this, NULL), NULL); + app::Vector2 ventVector2D = { ventVector.x, ventVector.y }; + synchronized(Replay::replayEventMutex) { + State.liveReplayEvents.emplace_back(std::make_unique(player.value(), ventVector2D, VENT_ACTIONS::VENT_ENTER)); + } } Vent_EnterVent(__this, pc, method); } void* dVent_ExitVent(Vent* __this, PlayerControl* pc, MethodInfo * method) { - auto ventVector = app::Transform_get_position(app::Component_get_transform((Component_1*)__this, NULL), NULL); - app::Vector2 ventVector2D = {ventVector.x, ventVector.y}; - synchronized(Replay::replayEventMutex) { - State.liveReplayEvents.emplace_back(std::make_unique(GetEventPlayerControl(pc).value(), ventVector2D, VENT_ACTIONS::VENT_EXIT)); + if (auto player = GetEventPlayerControl(pc)) { + auto ventVector = app::Transform_get_position(app::Component_get_transform((Component_1*)__this, NULL), NULL); + app::Vector2 ventVector2D = { ventVector.x, ventVector.y }; + synchronized(Replay::replayEventMutex) { + State.liveReplayEvents.emplace_back(std::make_unique(player.value(), ventVector2D, VENT_ACTIONS::VENT_EXIT)); + } } return Vent_ExitVent(__this, pc, method); } \ No newline at end of file diff --git a/user/utility.cpp b/user/utility.cpp index 8eea281e..ac204113 100644 --- a/user/utility.cpp +++ b/user/utility.cpp @@ -856,7 +856,10 @@ std::string GetPlayerName() { LOG_ASSERT(field != nullptr); auto customization = il2cpp_field_get_value_object(field, player); LOG_ASSERT(customization != nullptr); - return convert_from_string(app::PlayerCustomizationData_get_Name(customization, nullptr)); + static FieldInfo* field2 = il2cpp_class_get_field_from_name(customization->Il2CppClass.klass, "name"); + auto name = il2cpp_field_get_value_object(field2, customization); + LOG_ASSERT(name != nullptr); + return convert_from_string(reinterpret_cast(name)); } void SetPlayerName(std::string_view name) { From 221832e5e7e83b3d095b6d92bdcefd60cbf5afec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=99=AF=E5=A4=A7=E4=BE=A0?= Date: Sat, 28 Oct 2023 16:12:06 +0800 Subject: [PATCH 9/9] fix #516 --- gui/gui-helpers.cpp | 10 +++++--- gui/tabs/players_tab.cpp | 37 ++++++++++++++++++----------- user/utility.cpp | 50 +++++++++++++++++----------------------- user/utility.h | 30 ++++++++++++++++-------- 4 files changed, 72 insertions(+), 55 deletions(-) diff --git a/gui/gui-helpers.cpp b/gui/gui-helpers.cpp index 38792118..e3b7ad65 100644 --- a/gui/gui-helpers.cpp +++ b/gui/gui-helpers.cpp @@ -133,7 +133,11 @@ bool CustomListBoxPlayerSelectionMultiple(const char* label, std::arrayfields.Disconnected) // maybe make that an option for replays ? (parameter based on "state.showDisconnected" related data) + auto playerSelection = PlayerSelection(playerData); + const auto& player = playerSelection.validate(); + if (!player.has_value()) + continue; + if (player.is_Disconnected()) // maybe make that an option for replays ? (parameter based on "state.showDisconnected" related data) continue; app::GameData_PlayerOutfit* outfit = GetPlayerOutfit(playerData); @@ -149,7 +153,7 @@ bool CustomListBoxPlayerSelectionMultiple(const char* label, std::arraystatic_fields->ImpostorRed); - else if (PlayerSelection(playerData).is_LocalPlayer() || std::count(State.aumUsers.begin(), State.aumUsers.end(), playerData->fields.PlayerId)) + else if (player.is_LocalPlayer() || std::count(State.aumUsers.begin(), State.aumUsers.end(), playerData->fields.PlayerId)) nameColor = AmongUsColorToImVec4(Palette__TypeInfo->static_fields->Orange); if (playerData->fields.IsDead) diff --git a/gui/tabs/players_tab.cpp b/gui/tabs/players_tab.cpp index 402ee5da..d6eb4f77 100644 --- a/gui/tabs/players_tab.cpp +++ b/gui/tabs/players_tab.cpp @@ -18,7 +18,10 @@ namespace PlayersTab { bool shouldEndListBox = ImGui::ListBoxHeader("###players#list", ImVec2(200, 150) * State.dpiScale); auto localData = GetPlayerData(*Game::pLocalPlayer); for (auto playerData : GetAllPlayerData()) { - if (playerData->fields.Disconnected) + const auto& player = PlayerSelection(playerData).validate(); + if (!player.has_value()) + continue; + if (player.is_Disconnected()) continue; app::GameData_PlayerOutfit* outfit = GetPlayerOutfit(playerData); @@ -26,9 +29,9 @@ namespace PlayersTab { std::string playerName = convert_from_string(GameData_PlayerOutfit_get_PlayerName(outfit, nullptr)); ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(0, 0) * State.dpiScale); ImGui::PushStyleVar(ImGuiStyleVar_FramePadding, ImVec2(0, 0) * State.dpiScale); - if (ImGui::Selectable(std::string("##" + playerName).c_str(), selectedPlayer.equals(playerData))) { - State.selectedPlayer = PlayerSelection(playerData); - selectedPlayer = State.selectedPlayer.validate(); + if (ImGui::Selectable(std::string("##" + playerName).c_str(), selectedPlayer.equals(player))) { + State.selectedPlayer = player; + selectedPlayer = player; } ImGui::SameLine(); ImGui::ColorButton(std::string("##" + playerName + "_ColorButton").c_str(), AmongUsColorToImVec4(GetPlayerColor(outfit->fields.ColorId)), ImGuiColorEditFlags_NoBorder | ImGuiColorEditFlags_NoTooltip); @@ -46,7 +49,7 @@ namespace PlayersTab { } else if(PlayerIsImpostor(localData) && PlayerIsImpostor(playerData)) nameColor = AmongUsColorToImVec4(Palette__TypeInfo->static_fields->ImpostorRed); - else if (PlayerSelection(playerData).is_LocalPlayer() || std::count(State.aumUsers.begin(), State.aumUsers.end(), playerData->fields.PlayerId)) + else if (player.is_LocalPlayer() || std::count(State.aumUsers.begin(), State.aumUsers.end(), playerData->fields.PlayerId)) nameColor = AmongUsColorToImVec4(Palette__TypeInfo->static_fields->Orange); if (playerData->fields.IsDead) @@ -77,7 +80,7 @@ namespace PlayersTab { GameOptions options; if (IsInGame() && options.GetGameMode() != GameModes__Enum::HideNSeek && !GetPlayerData(*Game::pLocalPlayer)->fields.IsDead) { //Player selection doesn't matter if (ImGui::Button("Call Meeting")) { - State.rpcQueue.push(new RpcReportPlayer(PlayerSelection())); + State.rpcQueue.push(new RpcReportPlayer({})); } } if (State.activeImpersonation) @@ -100,6 +103,8 @@ namespace PlayersTab { queue->push(new RpcSetName(State.originalName)); State.activeImpersonation = false; } + if (IsInLobby()) + ResetOriginalAppearance(); } } if (selectedPlayer.has_value()) @@ -107,21 +112,21 @@ namespace PlayersTab { if (IsInGame() && !GetPlayerData(*Game::pLocalPlayer)->fields.IsDead && selectedPlayer.get_PlayerData()->fields.IsDead) { ImGui::NewLine(); if (ImGui::Button("Report Body")) { - State.rpcQueue.push(new RpcReportPlayer(State.selectedPlayer)); + State.rpcQueue.push(new RpcReportPlayer(selectedPlayer)); } } ImGui::NewLine(); if (IsInGame() && !selectedPlayer.is_Disconnected() && !selectedPlayer.is_LocalPlayer()) { - if (State.playerToFollow.equals(State.selectedPlayer)) { + if (State.playerToFollow.equals(selectedPlayer)) { if (ImGui::Button("Stop Spectating")) { - State.playerToFollow = PlayerSelection(); + State.playerToFollow.reset(); } } else { if (ImGui::Button("Spectate")) { State.FreeCam = false; - State.playerToFollow = State.selectedPlayer; + State.playerToFollow = selectedPlayer; } } } @@ -136,7 +141,7 @@ namespace PlayersTab { } else if(!selectedPlayer.is_LocalPlayer()) { if ((IsInMultiplayerGame() || IsInLobby()) && ImGui::Button("Steal Name")) { - ImpersonateName(State.selectedPlayer); + ImpersonateName(selectedPlayer.get_PlayerData()); } } if ((IsInGame() || IsInLobby())) { @@ -155,8 +160,12 @@ namespace PlayersTab { if (IsInGame()) queue = &State.rpcQueue; - else if (IsInLobby()) + else if (IsInLobby()) { queue = &State.lobbyRpcQueue; + if (State.originalColor == Game::NoColorId) { + SaveOriginalAppearance(); + } + } if (queue != nullptr) { if (IsHost()) @@ -168,7 +177,7 @@ namespace PlayersTab { queue->push(new RpcSetVisor(visorId)); queue->push(new RpcSetHat(hatId)); queue->push(new RpcSetNamePlate(namePlateId)); - ImpersonateName(State.selectedPlayer); + ImpersonateName(selectedPlayer.get_PlayerData()); State.activeImpersonation = true; } } @@ -186,7 +195,7 @@ namespace PlayersTab { if (ImGui::Button("Kill Player")) { previousPlayerPosition = GetTrueAdjustedPosition(*Game::pLocalPlayer); - State.rpcQueue.push(new CmdCheckMurder(State.selectedPlayer)); + State.rpcQueue.push(new CmdCheckMurder(selectedPlayer)); framesPassed = 40; } } diff --git a/user/utility.cpp b/user/utility.cpp index ac204113..5290f0c8 100644 --- a/user/utility.cpp +++ b/user/utility.cpp @@ -124,8 +124,7 @@ Vector2 GetTrueAdjustedPosition(PlayerControl* playerControl) #pragma region PlayerSelection PlayerSelection::PlayerSelection() noexcept { - this->clientId = Game::NoClientId; - this->playerId = Game::NoPlayerId; + this->reset(); } PlayerSelection::PlayerSelection(const PlayerControl* playerControl) { @@ -134,7 +133,7 @@ PlayerSelection::PlayerSelection(const PlayerControl* playerControl) { this->playerId = playerControl->fields.PlayerId; } else { - new (this)PlayerSelection(); + this->reset(); } } @@ -142,6 +141,10 @@ PlayerSelection::PlayerSelection(GameData_PlayerInfo* playerData) { new (this)PlayerSelection(app::GameData_PlayerInfo_get_Object(playerData, nullptr)); } +PlayerSelection::PlayerSelection(const PlayerSelection::Result& result) { + new (this)PlayerSelection(result.has_value() ? result.get_PlayerControl() : nullptr); +} + PlayerSelection::Result PlayerSelection::validate() { auto playerControl = this->get_PlayerControl(); if (playerControl) { @@ -150,17 +153,27 @@ PlayerSelection::Result PlayerSelection::validate() { return { (*playerControl), playerData }; } } - this->clientId = Game::NoClientId; - this->playerId = Game::NoPlayerId; + this->reset(); return {}; } bool PlayerSelection::equals(const PlayerSelection& selectedPlayer) const { + if (this == &selectedPlayer) return true; if (!this->has_value() || !selectedPlayer.has_value()) return false; return std::tie(clientId, playerId) == std::tie(selectedPlayer.clientId, selectedPlayer.playerId); } +bool PlayerSelection::equals(const PlayerSelection::Result& selectedPlayer) const { + if (!this->has_value() || !selectedPlayer.has_value()) return false; + if (clientId == Game::HostInherit) { + return playerId == selectedPlayer.get_PlayerControl()->fields.PlayerId; + } + return std::tie(clientId, playerId) == + std::tie(selectedPlayer.get_PlayerControl()->fields._.OwnerId, + selectedPlayer.get_PlayerControl()->fields.PlayerId); +} + std::optional PlayerSelection::get_PlayerControl() const { if (!this->has_value()) return std::nullopt; @@ -204,27 +217,6 @@ std::optional PlayerSelection::get_PlayerData() const } return std::nullopt; } - -Game::PlayerId PlayerSelection::get_PlayerId() const noexcept { -#if 0//_DEBUG - LOG_ASSERT(this->has_value()); -#endif - return this->playerId; -} - -Game::ClientId PlayerSelection::get_ClientId() const noexcept { -#if 0//_DEBUG - LOG_ASSERT(this->has_value()); -#endif - return this->clientId; -} - -bool PlayerSelection::is_LocalPlayer() const noexcept { -#if 0//_DEBUG - LOG_ASSERT(this->has_value()); -#endif - return this->clientId == (*Game::pAmongUsClient)->fields._.ClientId; -} #pragma endregion ImVec4 AmongUsColorToImVec4(const Color& color) { @@ -608,10 +600,10 @@ std::string GetGitBranch() return "unavailable"; } -void ImpersonateName(PlayerSelection& _player) +void ImpersonateName(__maybenull GameData_PlayerInfo* data) { - auto player = _player.validate(); if (!player.has_value()) return; - app::GameData_PlayerOutfit* outfit = GetPlayerOutfit(player.get_PlayerData()); + if (!data) return; + app::GameData_PlayerOutfit* outfit = GetPlayerOutfit(data); if (!(IsInGame() || IsInLobby() || outfit)) return; const auto& playerName = convert_from_string(GameData_PlayerOutfit_get_PlayerName(outfit, nullptr)); if (playerName.length() < 10) { diff --git a/user/utility.h b/user/utility.h index 19c1219f..33a8929f 100644 --- a/user/utility.h +++ b/user/utility.h @@ -84,13 +84,14 @@ class PlayerSelection { #endif return _playerData->fields.Disconnected; } - constexpr bool equals(_Maybenull_ const PlayerControl* playerControl) const { - return _playerControl == playerControl; + constexpr bool equals(const Result& _Right) const noexcept { + if (!this->has_value() || !_Right.has_value()) return false; + return _playerControl == _Right._playerControl; } - constexpr bool equals(_Maybenull_ const GameData_PlayerInfo* playerData) const { - return _playerData == playerData; + constexpr bool has_value() const noexcept { + return _has_value; } - constexpr bool has_value() const { + constexpr operator bool() const noexcept { return _has_value; } private: @@ -116,13 +117,24 @@ class PlayerSelection { PlayerSelection() noexcept; explicit PlayerSelection(const PlayerControl* playerControl); explicit PlayerSelection(GameData_PlayerInfo* playerData); + PlayerSelection(const PlayerSelection::Result& result); PlayerSelection::Result validate(); bool equals(const PlayerSelection& selectedPlayer) const; - Game::PlayerId get_PlayerId() const noexcept; - Game::ClientId get_ClientId() const noexcept; - bool is_LocalPlayer() const noexcept; + bool equals(const PlayerSelection::Result& selectedPlayer) const; + Game::PlayerId get_PlayerId() const noexcept { + return this->playerId; + } + Game::ClientId get_ClientId() const noexcept { + return this->clientId; + } + + constexpr void reset() noexcept { + this->clientId = Game::NoClientId; + this->playerId = Game::NoPlayerId; + } + bool has_value() const noexcept { return (this->clientId != Game::NoClientId || this->playerId != Game::NoPlayerId); } @@ -181,7 +193,7 @@ std::string ToString(__maybenull PlayerControl* player); std::string ToString(__maybenull GameData_PlayerInfo* data); std::string GetGitCommit(); std::string GetGitBranch(); -void ImpersonateName(PlayerSelection& player); +void ImpersonateName(__maybenull GameData_PlayerInfo* data); Game::ColorId GetRandomColorId(); void SaveOriginalAppearance(); void ResetOriginalAppearance();