You are viewing a potentially older version of this package. View all versions.
Venomaus-SODCommon-2.0.3 icon

SODCommon

A common library for SOD mods.

Date uploaded 3 months ago
Version 2.0.3
Download link Venomaus-SODCommon-2.0.3.zip
Downloads 280
Dependency string Venomaus-SODCommon-2.0.3

README

SOD.Common

Overview

Welcome to SOD.Common! This library provides a comprehensive set of helper classes and extensions to enhance your modding experience for the game "Shadows of Doubt."

Current target: IL2CPP Branch

Table of Contents

Features

  • Extensive Helper Classes: This library includes a wide range of helper classes to simplify common modding tasks in Shadows of Doubt.

  • Useful Extensions: Take advantage of useful extensions designed to streamline your mod development process.

  • Compatibility: The library is designed to be compatible with the latest version of Shadows of Doubt.

Thunderstore

The official thunderstore page can be found here: SOD.Common

Setting up your mod manifest with SOD.Common:

Setup SOD.Common as a dependency to your mod using the correct dependency string:

"dependencies": ["Venomaus-SODCommon-VERSION"]
// Example:
"dependencies": ["Venomaus-SODCommon-1.1.0"]

Modding

To install SOD.Common for use during your mod development, you can install the nuget package of the latest build. You can find the latest nuget package here: SOD.Common Nuget Packages

Documentation

All the documentation about the features and extensions can be found on the wiki.

Contributing

To contribute to the library, take a look at CONTRIBUTING.

Releases

  • Main: Contains the current public stable release available on Thunderstore.
  • Develop: Contains the latest additions and bugfixes.

When a new public stable release is created it will also be tagged with the version number.

License

This project is licensed under the MIT License

CHANGELOG

CHANGELOG

2.0.6

  • Removed TryCast extension as it was interfering with universelib
  • [Compatibility fix] Sync disk helper now works again on main branch

2.0.5

  • Added null ref checks to some methods in the dialog controller patches

2.0.4

  • Added extra helpers to the plugin detection lib
  • Added extra extension to TryCast for il2cpp types.

2.0.3

  • Added Gameplay Lib helper which provides functionality related to the detective gameplay
  • Added CaseObjectives Lib helper which provides functionality to create and hook new objectives to cases
  • Added extra extensions for il2cpp to enumerable support

2.0.2

  • Bugfix option ids were not passed through properly for Upgrade Options on sync disk builder
  • Code cleanup, logging and performance improvements to sync disk helper
  • Added GameExtensions class, which will contain helper extensions for the game, such as "Actor.Sees(actor);"
  • Added GetUniqueNumber variant to SaveGame helper (similar to GetUniqueString but uint version)
  • Added GetPluginDirectoryPath to SaveGame helper
  • Optimized InputController_Update patch input detection handling

2.0.1

  • Adjusted GetSavestoreDirectoryPath method overrides. (No more missing method exception when not providing filename parameter)
  • Added extension class "GameExtensions" in SOD.Common.Extensions
  • Added CanSee extension in "GameExtensions" for Actor object

2.0.0

  • Fix missing method exceptions.

1.1.9

  • Added extra operators (<, >, <=, >=) to TimeData struct in Lib.Time
  • Added extra AddHours method to TimeData struct in Lib.Time
  • Fixed parsing issue with GetFnvHashCode extension
  • Fixed Lib.Time not initializing properly in some specific scenarios
  • Removed 'GetPluginGuidFromPartialGuid' method from PluginDetection lib
  • Minor bugfixes and code cleanup/optimization
  • Added traits, occupations, and world spawning to sync disk builder
  • Added JsonUtility as part of RestoredUnityEngine functions helper (thx piepieonline)

1.1.8

  • Added non-generic bind extension on BepInEx ConfigFile object
  • Added support for enum values in interface bindings
  • Added method "UpdateConfigFileLayout" to PluginController for IPluginBindings clean up support
  • Added Dialog Helper to create dialogs between player and npcs. (Lib.Dialog)
  • Added PlayerStatus helper, it provides helpers to set status on player such as illegal status. (Lib.PlayerStatus)
  • Fixed DDS entries (names, descriptions, text) not being loaded for custom sync disks when loading/creating a game from an already ongoing game.
  • Sync disk DDS records are now unique and cannot be overriden anymore by other mods by accident
  • Added ChainLoader util to detect the presence of another mod (Lib.PluginDetection)

1.1.7

  • Made sync disk re-raise events optional (extra parameter in builder, default true)

1.1.6

  • Lib.SyncDisks.Builder method signature changed, (added extra parameter)
  • Custom installed syncdisks will now re-raise their install and upgrade events on loading a savegame
  • Inner exception message is now shown when an error occurs in plugin-bindings proxy.

1.1.5

  • Added DdsStrings helper to add DDS strings directly in the game.
  • Added SyncDisk helper class to very easily create new sync disks and hook events

1.1.4

  • Fixed null reference errors regarding interaction helpers
  • Fixed time not re-initializing when triggering a new game from an ongoing game

1.1.3

  • Added Interaction helpers (prerelease v1.2.0)

1.1.2

  • Fixed MonthEnum and DayEnum being wrong
  • Added TimeData.AddMinutes method

1.1.1

  • Fix ToString() formatting for Time.TimeData
  • Fix for AddDays and - operator when month/day are 0 in Time.TimeData

1.1.0 Bugfixes:

  • Bugfix: loading a save game triggers the load process twice

Adjustments:

  • Renamed Common class to Lib to make it easier to access the helper classes.
  • PluginController Instance now returns the actual class itself by using PluginController<TImpl, TBindings> where TImpl is your Plugin class.

New features:

  • Added MersenneTwister random number generator implementation (which allows the full state to be exported and reimported)
  • Added IEnumerable extensions for Il2Cpp list objects (Select, Where, ToList, ToListIl2Cpp), including Il2Cpp IList objects
  • Added SaveGame helper class (events that trigger such as: NewGame, LoadGame, Create SaveGame, Delete SaveGame)
  • Added Time helper class (events and properties to access the in-game time)
  • Added InputDetection helper class (events that trigger when a button is pressed)

1.0.0

  • Initial release