using System.Globalization; namespace AcDream.Core.Chat; /// /// Byte-verified retail string literals for the Gameplay Options tab's /// button family (Campaign OP slice OP3, 2026-08-11) — /// docs/research/2026-08-10-keyboard-config-and-gameplay-tab.md /// §4.4 (Use Mouse Turning Settings) and §4.1/§4.2 (Urgent Assistance / /// Report Abuse). Every literal was recovered from the PDB-paired binary /// C:\Users\erikn\Downloads\acclient.exe by a push-imm32 sweep of the /// cited VA range, same discipline as . /// public static class OptionsPanelText { /// /// gmConfigUI::SetMouseTurningDefaults @0x0049E8F0, format string /// VA 0x007A8A70: 'Camera Stiffness was changed from %f to the /// mouse turning default of %f.'. / /// render with 6 fractional digits, matching /// retail's default printf %f precision. /// public static string CameraStiffnessChanged(float from, float to) => string.Format( CultureInfo.InvariantCulture, "Camera Stiffness was changed from {0} to the mouse turning default of {1}.", from.ToString("F6", CultureInfo.InvariantCulture), to.ToString("F6", CultureInfo.InvariantCulture)); /// /// Same site, format string VA 0x007A8A20: 'Camera Adjustment /// was changed from %f to the mouse turning default of %f.'. /// public static string CameraAdjustmentChanged(float from, float to) => string.Format( CultureInfo.InvariantCulture, "Camera Adjustment was changed from {0} to the mouse turning default of {1}.", from.ToString("F6", CultureInfo.InvariantCulture), to.ToString("F6", CultureInfo.InvariantCulture)); /// /// Same site, format string VA 0x007A89D0: 'Mouse Sensitivity /// was changed from %f to the mouse turning default of %f.'. /// public static string MouseSensitivityChanged(float from, float to) => string.Format( CultureInfo.InvariantCulture, "Mouse Sensitivity was changed from {0} to the mouse turning default of {1}.", from.ToString("F6", CultureInfo.InvariantCulture), to.ToString("F6", CultureInfo.InvariantCulture)); /// /// Same site, VA 0x007A8980, byte-verified literal (no format /// specifiers — retail hardcodes TRUE/FALSE for this one bool pair): /// 'Align To Slope was changed from TRUE to the mouse turning default /// of FALSE.'. Only fires when the current value IS true (the /// macro's own condition, §4.4) so the "from TRUE" half is always /// accurate. /// public const string AlignToSlopeChanged = "Align To Slope was changed from TRUE to the mouse turning default of FALSE."; /// /// Same site, VA 0x007A8928: 'Invert Mouselook Axes was /// changed from FALSE to the mouse turning default of TRUE.'. Only /// fires when the current value IS false. /// public const string InvertMouseLookAxesChanged = "Invert Mouselook Axes was changed from FALSE to the mouse turning default of TRUE."; /// /// Same site, VA 0x007A88D0: 'Turn to Face Camera was changed /// from FALSE to the mouse turning default of TRUE.'. This is the /// Config-tab UI LABEL for PlayerOption.UseMouseTurning — the /// option itself is named "Use Mouse Turning" in code, "Turn to Face /// Camera" in the string table. Only fires when the current value IS /// false. /// public const string TurnToFaceCameraChanged = "Turn to Face Camera was changed from FALSE to the mouse turning default of TRUE."; /// /// Urgent Assistance (element 0x10000206) / /// Report Abuse (element 0x10000207) — retail's /// ShellExecuteA failure MessageBoxA body, byte-verified at /// VA 0x007A81E0 (Urgent) / 0x007A8128 (Abuse): /// 'An error occurred while trying to launch your web browser. (Error /// code %d)\nThe web site to submit an urgent assistance request / /// abuse report is listed below. Please go there to complete your /// request.\n%s\n', title "Asheron's Call Error" (VA /// 0x00794078). /// /// /// D5 adaptation (register row, same commit): acdream never attempts /// ShellExecuteA against the dead support.turbine.com /// endpoint (§0 of the research doc — both EoR buttons already point at /// a URL that is not live today), so there is no real Win32 error code /// to interpolate and the (Error code %d) clause is dropped; the /// trailing %s URL substitution is KEPT verbatim (the byte-verified /// URL below) so the user can still copy it manually, matching retail's /// own intent for that clause. Delivered through the interface-text /// seam (RetailLogTextType.ClientLocal) rather than a native /// MessageBoxA popup — see the register row for the short-circuit. /// /// public const string SupportUrl = "http://support.turbine.com/ics/support/ticketnewwizard.asp?style=classic"; public static string UrgentAssistanceUnavailable => string.Format( CultureInfo.InvariantCulture, "An error occurred while trying to launch your web browser.\n" + "The web site to submit an urgent assistance request is listed below. " + "Please go there to complete your request.\n{0}", SupportUrl); public static string ReportAbuseUnavailable => string.Format( CultureInfo.InvariantCulture, "An error occurred while trying to launch your web browser.\n" + "The web site to submit an abuse report is listed below. " + "Please go there to complete your request.\n{0}", SupportUrl); }