From 88bc4c01afcbe1525f6e2d65eecd37abd18d3849 Mon Sep 17 00:00:00 2001 From: misomosi Date: Mon, 18 May 2026 02:59:20 -0400 Subject: [PATCH] Add initial OSFE proposal sources --- OSFE/.gitignore | 4 ++ OSFE/README.md | 29 +++++++++ OSFE/RetroAchievements.cs | 33 ++++++++++ OSFE/RetroAchievements.csproj | 116 ++++++++++++++++++++++++++++++++++ OSFE/WorkshopItemInfo.xml | 8 +++ OSFE/workshopIcon.png | Bin 0 -> 22094 bytes 6 files changed, 190 insertions(+) create mode 100644 OSFE/.gitignore create mode 100644 OSFE/README.md create mode 100644 OSFE/RetroAchievements.cs create mode 100644 OSFE/RetroAchievements.csproj create mode 100644 OSFE/WorkshopItemInfo.xml create mode 100644 OSFE/workshopIcon.png diff --git a/OSFE/.gitignore b/OSFE/.gitignore new file mode 100644 index 0000000..5e82362 --- /dev/null +++ b/OSFE/.gitignore @@ -0,0 +1,4 @@ +# Don't distribute the copyrighted game DLLs, make modders provide their own +lib/*.dll +bin/ +obj/ diff --git a/OSFE/README.md b/OSFE/README.md new file mode 100644 index 0000000..c3f2f97 --- /dev/null +++ b/OSFE/README.md @@ -0,0 +1,29 @@ +# One Step from Eden Standalone + +Proposal for Standalone Support for One Step from Eden + +## One Step from Eden Modding Intro + +One Step from Eden supports mods via LibHarmony and the Steam workshop + +LibHarmony allows you to patch a large variety of things in the +C# application it is loaded in, and we can use this to essentially +patch any method or class that we would like to patch. + +## Hardcore Implementation + +There are two methods to install mods. One is through the Steam Workshop +and the other is through the local Mods folder. + +The local mods are always loaded and they are loaded before Steam Workshop mods. +They can also be assigned a priority to prefer some local mods over others. + +Steam workshop mods can be toggled active or inactive and they can be also be assigned a priority. +Most mods assign a priority of 0, some have a higher finite value (i.e. MoreLuaPower uses 1000). + +RetroAchievements must load before any other mod to enforce hardcore mode restrictions, +so we should assign ourselves a priority of "+Infinity" and check that there are no local +mods installed (we should be a Steam workshop mod) and that all other mods have finite priorities. + +Of course, anyone could cheat and load before us and mess with this process, but it's +useful to prevent accidental mod loading and make it a bit harder for people to cheat. diff --git a/OSFE/RetroAchievements.cs b/OSFE/RetroAchievements.cs new file mode 100644 index 0000000..dd96cb5 --- /dev/null +++ b/OSFE/RetroAchievements.cs @@ -0,0 +1,33 @@ +using HarmonyLib; +using System.IO; +using UnityEngine; + +// We don't actually care much about hooking LoadItemData, but it's +// called soon after mods are loaded, so it gives us an early entrypoint +[HarmonyPatch(typeof(ItemManager), "LoadItemData")] +internal class EntryPoint +{ + // TODO: + // If we are in hardcore mode, do a basic check to make sure no other mods are loaded. + // This is a clientside check, so there's only so much we can do, but make a good effort + // to prevent accidents and require at least some hacking knowledge to cheat. + // * This is a steam workshop project, so ensure Mods folder is empty (Those mods loaded unconditionally, first) + // * Make sure we have a priority of Infinity + // * Make sure all other Steam workshop projects have a finite priority + static EntryPoint() + { + Debug.Log("Hello World!"); + } + static void Prefix() {} +} + +[HarmonyPatch(typeof(ModCtrl), "_InstallTheseMods")] +internal class InstallTheseMods_patch +{ + // TODO: Allow loading of mods in softcore + static bool Prefix(FileInfo[] fileInfo, string modsDir) + { + Debug.Log("Nope! Can't install any more mods! Not allowed!"); + return false; + } +} diff --git a/OSFE/RetroAchievements.csproj b/OSFE/RetroAchievements.csproj new file mode 100644 index 0000000..7542c9e --- /dev/null +++ b/OSFE/RetroAchievements.csproj @@ -0,0 +1,116 @@ + + + + 9.0 + net452 + true + true + + + + lib/0Harmony.dllFalse + lib/Assembly-CSharp-firstpass.dllFalse + lib/Assembly-CSharp.dllFalse + lib/E7.Introloop.dllFalse + lib/GalaxyCSharp.dllFalse + lib/Mono.Posix.dllFalse + lib/Mono.Security.dllFalse + lib/Rewired_Core.dllFalse + lib/Rewired_Windows.dllFalse + lib/Sirenix.OdinInspector.Attributes.dllFalse + lib/Sirenix.OdinInspector.CompatibilityLayer.dllFalse + lib/Sirenix.Serialization.AOTGenerated.dllFalse + lib/Sirenix.Serialization.Config.dllFalse + lib/Sirenix.Serialization.dllFalse + lib/Sirenix.Utilities.dllFalse + lib/SonicBloom.Koreo.dllFalse + lib/SonyNP.dllFalse + lib/SonyPS4CommonDialog.dllFalse + lib/SonyPS4SaveData.dllFalse + lib/System.Configuration.dllFalse + lib/System.Core.dllFalse + lib/System.Data.dllFalse + lib/System.Drawing.dllFalse + lib/System.EnterpriseServices.dllFalse + lib/System.Net.Http.dllFalse + lib/System.Numerics.dllFalse + lib/System.Runtime.Serialization.dllFalse + lib/System.Security.dllFalse + lib/System.ServiceModel.Internals.dllFalse + lib/System.Transactions.dllFalse + lib/System.Xml.Linq.dllFalse + lib/System.Xml.dllFalse + lib/System.dllFalse + lib/TwitchLib.Unity.dllFalse + lib/Unity.Analytics.DataPrivacy.dllFalse + lib/Unity.Analytics.StandardEvents.dllFalse + lib/Unity.Analytics.Tracker.dllFalse + lib/Unity.TextMeshPro.dllFalse + lib/UnityEngine.AIModule.dllFalse + lib/UnityEngine.ARModule.dllFalse + lib/UnityEngine.AccessibilityModule.dllFalse + lib/UnityEngine.AnimationModule.dllFalse + lib/UnityEngine.AssetBundleModule.dllFalse + lib/UnityEngine.AudioModule.dllFalse + lib/UnityEngine.BaselibModule.dllFalse + lib/UnityEngine.ClothModule.dllFalse + lib/UnityEngine.ClusterInputModule.dllFalse + lib/UnityEngine.ClusterRendererModule.dllFalse + lib/UnityEngine.CoreModule.dllFalse + lib/UnityEngine.CrashReportingModule.dllFalse + lib/UnityEngine.DirectorModule.dllFalse + lib/UnityEngine.FileSystemHttpModule.dllFalse + lib/UnityEngine.GameCenterModule.dllFalse + lib/UnityEngine.GridModule.dllFalse + lib/UnityEngine.HotReloadModule.dllFalse + lib/UnityEngine.IMGUIModule.dllFalse + lib/UnityEngine.ImageConversionModule.dllFalse + lib/UnityEngine.InputModule.dllFalse + lib/UnityEngine.JSONSerializeModule.dllFalse + lib/UnityEngine.LocalizationModule.dllFalse + lib/UnityEngine.Networking.dllFalse + lib/UnityEngine.ParticleSystemModule.dllFalse + lib/UnityEngine.PerformanceReportingModule.dllFalse + lib/UnityEngine.Physics2DModule.dllFalse + lib/UnityEngine.PhysicsModule.dllFalse + lib/UnityEngine.ProfilerModule.dllFalse + lib/UnityEngine.ScreenCaptureModule.dllFalse + lib/UnityEngine.SharedInternalsModule.dllFalse + lib/UnityEngine.SpatialTracking.dllFalse + lib/UnityEngine.SpriteMaskModule.dllFalse + lib/UnityEngine.SpriteShapeModule.dllFalse + lib/UnityEngine.StreamingModule.dllFalse + lib/UnityEngine.StyleSheetsModule.dllFalse + lib/UnityEngine.SubstanceModule.dllFalse + lib/UnityEngine.TLSModule.dllFalse + lib/UnityEngine.TerrainModule.dllFalse + lib/UnityEngine.TerrainPhysicsModule.dllFalse + lib/UnityEngine.TextCoreModule.dllFalse + lib/UnityEngine.TextRenderingModule.dllFalse + lib/UnityEngine.TilemapModule.dllFalse + lib/UnityEngine.Timeline.dllFalse + lib/UnityEngine.TimelineModule.dllFalse + lib/UnityEngine.UI.dllFalse + lib/UnityEngine.UIElementsModule.dllFalse + lib/UnityEngine.UIModule.dllFalse + lib/UnityEngine.UNETModule.dllFalse + lib/UnityEngine.UmbraModule.dllFalse + lib/UnityEngine.UnityAnalyticsModule.dllFalse + lib/UnityEngine.UnityConnectModule.dllFalse + lib/UnityEngine.UnityTestProtocolModule.dllFalse + lib/UnityEngine.UnityWebRequestAssetBundleModule.dllFalse + lib/UnityEngine.UnityWebRequestAudioModule.dllFalse + lib/UnityEngine.UnityWebRequestModule.dllFalse + lib/UnityEngine.UnityWebRequestTextureModule.dllFalse + lib/UnityEngine.UnityWebRequestWWWModule.dllFalse + lib/UnityEngine.VFXModule.dllFalse + lib/UnityEngine.VRModule.dllFalse + lib/UnityEngine.VehiclesModule.dllFalse + lib/UnityEngine.VideoModule.dllFalse + lib/UnityEngine.WindModule.dllFalse + lib/UnityEngine.XRModule.dllFalse + lib/UnityEngine.dllFalse + lib/com.rlabrecque.steamworks.net.dllFalse + lib/mscorlib.dllFalse + + diff --git a/OSFE/WorkshopItemInfo.xml b/OSFE/WorkshopItemInfo.xml new file mode 100644 index 0000000..12e28bf --- /dev/null +++ b/OSFE/WorkshopItemInfo.xml @@ -0,0 +1,8 @@ + + RetroAchievements + Integrate with RetroAchievements + + +Infinity + 0 + 1.3 + diff --git a/OSFE/workshopIcon.png b/OSFE/workshopIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..7f4398bc060da271fc09b7618ee371950541ac5c GIT binary patch literal 22094 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 literal 0 HcmV?d00001 -- 2.49.1