diff --git a/1.4/Assemblies/0Harmony.dll b/1.4/Assemblies/0Harmony.dll new file mode 100644 index 0000000..e182535 Binary files /dev/null and b/1.4/Assemblies/0Harmony.dll differ diff --git a/1.4/Assemblies/0Harmony.xml b/1.4/Assemblies/0Harmony.xml new file mode 100644 index 0000000..f1b9b4c --- /dev/null +++ b/1.4/Assemblies/0Harmony.xml @@ -0,0 +1,3693 @@ + + + + 0Harmony + + + + A factory to create delegate types + + + Default constructor + + + Creates a delegate type for a method + The method + The new delegate type + + + + A getter delegate type + Type that getter gets field/property value from + Type of the value that getter gets + The instance get getter uses + An delegate + + + + A setter delegate type + Type that setter sets field/property value for + Type of the value that setter sets + The instance the setter uses + The value the setter uses + An delegate + + + + A constructor delegate type + Type that constructor creates + An delegate + + + + A helper class for fast access to getters and setters + + + Creates an instantiation delegate + Type that constructor creates + The new instantiation delegate + + + + Creates an getter delegate for a property + Type that getter reads property from + Type of the property that gets accessed + The property + The new getter delegate + + + + Creates an getter delegate for a field + Type that getter reads field from + Type of the field that gets accessed + The field + The new getter delegate + + + + Creates an getter delegate for a field (with a list of possible field names) + Type that getter reads field/property from + Type of the field/property that gets accessed + A list of possible field names + The new getter delegate + + + + Creates an setter delegate + Type that setter assigns property value to + Type of the property that gets assigned + The property + The new setter delegate + + + + Creates an setter delegate for a field + Type that setter assigns field value to + Type of the field that gets assigned + The field + The new getter delegate + + + + A delegate to invoke a method + The instance + The method parameters + The method result + + + A helper class to invoke method with delegates + + + Creates a fast invocation handler from a method + The method to invoke + Controls if boxed value object is accessed/updated directly + The + + + The directBoxValueAccess option controls how value types passed by reference (e.g. ref int, out my_struct) are handled in the arguments array + passed to the fast invocation handler. + Since the arguments array is an object array, any value types contained within it are actually references to a boxed value object. + Like any other object, there can be other references to such boxed value objects, other than the reference within the arguments array. + For example, + + var val = 5; + var box = (object)val; + var arr = new object[] { box }; + handler(arr); // for a method with parameter signature: ref/out/in int + + + + + If directBoxValueAccess is true, the boxed value object is accessed (and potentially updated) directly when the handler is called, + such that all references to the boxed object reflect the potentially updated value. + In the above example, if the method associated with the handler updates the passed (boxed) value to 10, both box and arr[0] + now reflect the value 10. Note that the original val is not updated, since boxing always copies the value into the new boxed value object. + + + If directBoxValueAccess is false (default), the boxed value object in the arguments array is replaced with a "reboxed" value object, + such that potential updates to the value are reflected only in the arguments array. + In the above example, if the method associated with the handler updates the passed (boxed) value to 10, only arr[0] now reflects the value 10. + + + + + A low level memory helper + + + + Mark method for no inlining (currently only works on Mono) + The method/constructor to change + + + + Detours a method + The original method/constructor + The replacement method/constructor + An error string + + + + Writes a jump to memory + The memory address + Jump destination + An error string + + + + Gets the start of a method in memory + The method/constructor + [out] Details of the exception + The method start address + + + + special parameter names that can be used in prefix and postfix methods + + + Patch function helpers + + + Sorts patch methods by their priority rules + The original method + Patches to sort + Use debug mode + The sorted patch methods + + + + Creates new replacement method with the latest patches and detours the original method + The original method + Information describing the patches + The newly created replacement method + + + + Creates a patch sorter + Array of patches that will be sorted + Use debugging + + + Sorts internal PatchSortingWrapper collection and caches the results. + After first run the result is provided from the cache. + The original method + The sorted patch methods + + + Checks if the sorter was created with the same patch list and as a result can be reused to + get the sorted order of the patches. + List of patches to check against + true if equal + + + Removes one unresolved dependency from the least important patch. + + + Outputs all unblocked patches from the waiting list to results list + + + Adds patch to both results list and handled patches set + Patch to add + + + Wrapper used over the Patch object to allow faster dependency access and + dependency removal in case of cyclic dependencies + + + Create patch wrapper object used for sorting + Patch to wrap + + + Determines how patches sort + The other patch + integer to define sort order (-1, 0, 1) + + + Determines whether patches are equal + The other patch + true if equal + + + Hash function + A hash code + + + Bidirectionally registers Patches as after dependencies + List of dependencies to register + + + Bidirectionally registers Patches as before dependencies + List of dependencies to register + + + Bidirectionally removes Patch from after dependencies + Patch to remove + + + Bidirectionally removes Patch from before dependencies + Patch to remove + + + Specifies the type of method + + + + This is a normal method + + + This is a getter + + + This is a setter + + + This is a constructor + + + This is a static constructor + + + This targets the MoveNext method of the enumerator result + + + Specifies the type of argument + + + + This is a normal argument + + + This is a reference argument (ref) + + + This is an out argument (out) + + + This is a pointer argument (&) + + + Specifies the type of patch + + + + Any patch + + + A prefix patch + + + A postfix patch + + + A transpiler + + + A finalizer + + + A reverse patch + + + Specifies the type of reverse patch + + + + Use the unmodified original method (directly from IL) + + + Use the original as it is right now including previous patches but excluding future ones + + + Specifies the type of method call dispatching mechanics + + + + Call the method using dynamic dispatching if method is virtual (including overriden) + + + This is the built-in form of late binding (a.k.a. dynamic binding) and is the default dispatching mechanic in C#. + This directly corresponds with the instruction. + + + For virtual (including overriden) methods, the instance type's most-derived/overriden implementation of the method is called. + For non-virtual (including static) methods, same behavior as : the exact specified method implementation is called. + + + Note: This is not a fully dynamic dispatch, since non-virtual (including static) methods are still called non-virtually. + A fully dynamic dispatch in C# involves using + the dynamic type + (actually a fully dynamic binding, since even the name and overload resolution happens at runtime), which does not support. + + + + + Call the method using static dispatching, regardless of whether method is virtual (including overriden) or non-virtual (including static) + + + a.k.a. non-virtual dispatching, early binding, or static binding. + This directly corresponds with the instruction. + + + For both virtual (including overriden) and non-virtual (including static) methods, the exact specified method implementation is called, without virtual/override mechanics. + + + + + The base class for all Harmony annotations (not meant to be used directly) + + + + The common information for all attributes + + + Annotation to define your Harmony patch methods + + + + An empty annotation can be used together with TargetMethod(s) + + + + An annotation that specifies a class to patch + The declaring class/type + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The argument types of the method or constructor to patch + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The name of the method, property or constructor to patch + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The name of the method, property or constructor to patch + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The name of the method, property or constructor to patch + An array of argument types to target overloads + Array of + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The + An array of argument types to target overloads + Array of + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The name of the method, property or constructor to patch + The + + + + An annotation that specifies a method, property or constructor to patch + The name of the method, property or constructor to patch + + + + An annotation that specifies a method, property or constructor to patch + The name of the method, property or constructor to patch + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + The name of the method, property or constructor to patch + An array of argument types to target overloads + An array of + + + + An annotation that specifies a method, property or constructor to patch + The name of the method, property or constructor to patch + The + + + + An annotation that specifies a method, property or constructor to patch + The + + + + An annotation that specifies a method, property or constructor to patch + The + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + The + An array of argument types to target overloads + An array of + + + + An annotation that specifies a method, property or constructor to patch + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + An array of argument types to target overloads + An array of + + + + An annotation that specifies a method, property or constructor to patch + The full name of the declaring class/type + The name of the method, property or constructor to patch + The + + + + Annotation to define the original method for delegate injection + + + + An annotation that specifies a class to patch + The declaring class/type + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The argument types of the method or constructor to patch + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The name of the method, property or constructor to patch + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The name of the method, property or constructor to patch + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The name of the method, property or constructor to patch + An array of argument types to target overloads + Array of + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The + An array of argument types to target overloads + Array of + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The name of the method, property or constructor to patch + The + + + + An annotation that specifies a method, property or constructor to patch + The name of the method, property or constructor to patch + + + + An annotation that specifies a method, property or constructor to patch + The name of the method, property or constructor to patch + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + The name of the method, property or constructor to patch + An array of argument types to target overloads + An array of + + + + An annotation that specifies a method, property or constructor to patch + The name of the method, property or constructor to patch + The + + + + An annotation that specifies call dispatching mechanics for the delegate + The + + + + An annotation that specifies a method, property or constructor to patch + The + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + The + An array of argument types to target overloads + An array of + + + + An annotation that specifies a method, property or constructor to patch + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + An array of argument types to target overloads + An array of + + + + Annotation to define your standin methods for reverse patching + + + + An annotation that specifies the type of reverse patching + The of the reverse patch + + + + A Harmony annotation to define that all methods in a class are to be patched + + + + A Harmony annotation + + + + A Harmony annotation to define patch priority + The priority + + + + A Harmony annotation + + + + A Harmony annotation to define that a patch comes before another patch + The array of harmony IDs of the other patches + + + + A Harmony annotation + + + A Harmony annotation to define that a patch comes after another patch + The array of harmony IDs of the other patches + + + + A Harmony annotation + + + A Harmony annotation to debug a patch (output uses to log to your Desktop) + + + + Specifies the Prepare function in a patch class + + + + Specifies the Cleanup function in a patch class + + + + Specifies the TargetMethod function in a patch class + + + + Specifies the TargetMethods function in a patch class + + + + Specifies the Prefix function in a patch class + + + + Specifies the Postfix function in a patch class + + + + Specifies the Transpiler function in a patch class + + + + Specifies the Finalizer function in a patch class + + + + A Harmony annotation + + + + The name of the original argument + + + + The index of the original argument + + + + The new name of the original argument + + + + An annotation to declare injected arguments by name + + + + An annotation to declare injected arguments by index + Zero-based index + + + + An annotation to declare injected arguments by renaming them + Name of the original argument + New name + + + + An annotation to declare injected arguments by index and renaming them + Zero-based index + New name + + + + An abstract wrapper around OpCode and their operands. Used by transpilers + + + + The opcode + + + + The operand + + + + All labels defined on this instruction + + + + All exception block boundaries defined on this instruction + + + + Creates a new CodeInstruction with a given opcode and optional operand + The opcode + The operand + + + + Create a full copy (including labels and exception blocks) of a CodeInstruction + The to copy + + + + Clones a CodeInstruction and resets its labels and exception blocks + A lightweight copy of this code instruction + + + + Clones a CodeInstruction, resets labels and exception blocks and sets its opcode + The opcode + A copy of this CodeInstruction with a new opcode + + + + Clones a CodeInstruction, resets labels and exception blocks and sets its operand + The operand + A copy of this CodeInstruction with a new operand + + + + Creates a CodeInstruction calling a method (CALL) + The class/type where the method is declared + The name of the method (case sensitive) + Optional parameters to target a specific overload of the method + Optional list of types that define the generic version of the method + A code instruction that calls the method matching the arguments + + + + Creates a CodeInstruction calling a method (CALL) + The target method in the form TypeFullName:MethodName, where the type name matches a form recognized by Type.GetType like Some.Namespace.Type. + Optional parameters to target a specific overload of the method + Optional list of types that define the generic version of the method + A code instruction that calls the method matching the arguments + + + + Creates a CodeInstruction calling a method (CALL) + The lambda expression using the method + + + + + Creates a CodeInstruction calling a method (CALL) + The lambda expression using the method + + + + + Creates a CodeInstruction calling a method (CALL) + The lambda expression using the method + + + + + Creates a CodeInstruction calling a method (CALL) + The lambda expression using the method + + + + + Returns an instruction to call the specified closure + The delegate type to emit + The closure that defines the method to call + A that calls the closure as a method + + + + Creates a CodeInstruction loading a field (LD[S]FLD[A]) + The class/type where the field is defined + The name of the field (case sensitive) + Use address of field + + + + Creates a CodeInstruction storing to a field (ST[S]FLD) + The class/type where the field is defined + The name of the field (case sensitive) + + + + Returns a string representation of the code instruction + A string representation of the code instruction + + + + Exception block types + + + + The beginning of an exception block + + + + The beginning of a catch block + + + + The beginning of an except filter block (currently not supported to use in a patch) + + + + The beginning of a fault block + + + + The beginning of a finally block + + + + The end of an exception block + + + + An exception block + + + + Block type + + + + Catch type + + + + Creates an exception block + The + The catch type + + + + The Harmony instance is the main entry to Harmony. After creating one with an unique identifier, it is used to patch and query the current application domain + + + + The unique identifier + + + + Set to true before instantiating Harmony to debug Harmony or use an environment variable to set HARMONY_DEBUG to '1' like this: cmd /C "set HARMONY_DEBUG=1 && game.exe" + This is for full debugging. To debug only specific patches, use the attribute + + + + Creates a new Harmony instance + A unique identifier (you choose your own) + A Harmony instance + + + + Searches the current assembly for Harmony annotations and uses them to create patches + This method can fail to use the correct assembly when being inlined. It calls StackTrace.GetFrame(1) which can point to the wrong method/assembly. If you are unsure or run into problems, use PatchAll(Assembly.GetExecutingAssembly()) instead. + + + + Creates a empty patch processor for an original method + The original method/constructor + A new instance + + + + Creates a patch class processor from an annotated class + The class/type + A new instance + + + + Creates a reverse patcher for one of your stub methods + The original method/constructor + The stand-in stub method as + A new instance + + + + Searches an assembly for Harmony annotations and uses them to create patches + The assembly + + + + Creates patches by manually specifying the methods + The original method/constructor + An optional prefix method wrapped in a object + An optional postfix method wrapped in a object + An optional transpiler method wrapped in a object + An optional finalizer method wrapped in a object + The replacement method that was created to patch the original method + + + + Patches a foreign method onto a stub method of yours and optionally applies transpilers during the process + The original method/constructor you want to duplicate + Your stub method as that will become the original. Needs to have the correct signature (either original or whatever your transpilers generates) + An optional transpiler as method that will be applied during the process + The replacement method that was created to patch the stub method + + + + Unpatches methods by patching them with zero patches. Fully unpatching is not supported. Be careful, unpatching is global + The optional Harmony ID to restrict unpatching to a specific Harmony instance + This method could be static if it wasn't for the fact that unpatching creates a new replacement method that contains your harmony ID + + + + Unpatches a method by patching it with zero patches. Fully unpatching is not supported. Be careful, unpatching is global + The original method/constructor + The + The optional Harmony ID to restrict unpatching to a specific Harmony instance + + + + Unpatches a method by patching it with zero patches. Fully unpatching is not supported. Be careful, unpatching is global + The original method/constructor + The patch method as method to remove + + + + Test for patches from a specific Harmony ID + The Harmony ID + True if patches for this ID exist + + + + Gets patch information for a given original method + The original method/constructor + The patch information as + + + + Gets the methods this instance has patched + An enumeration of original methods/constructors + + + + Gets all patched original methods in the appdomain + An enumeration of patched original methods/constructors + + + + Gets the original method from a given replacement method + A replacement method, for example from a stacktrace + The original method/constructor or null if not found + + + + Tries to get the method from a stackframe including dynamic replacement methods + The + For normal frames, frame.GetMethod() is returned. For frames containing patched methods, the replacement method is returned or null if no method can be found + + + + Gets the original method from the stackframe and uses original if method is a dynamic replacement + The + The original method from that stackframe + + + Gets Harmony version for all active Harmony instances + [out] The current Harmony version + A dictionary containing assembly versions keyed by Harmony IDs + + + + Under Mono, HarmonyException wraps IL compile errors with detailed information about the failure + + + + Default serialization constructor (not implemented) + The info + The context + + + + Get a list of IL instructions in pairs of offset+code + A list of key/value pairs which represent an offset and the code at that offset + + + + Get a list of IL instructions without offsets + A list of + + + + Get the error offset of the errornous IL instruction + The offset + + + + Get the index of the errornous IL instruction + The index into the list of instructions or -1 if not found + + + + A wrapper around a method to use it as a patch (for example a Prefix) + + + + The original method + + + + Class/type declaring this patch + + + + Patch method name + + + + Optional patch + + + + Array of argument types of the patch method + + + + of the patch + + + + Install this patch before patches with these Harmony IDs + + + + Install this patch after patches with these Harmony IDs + + + + Reverse patch type, see + + + + Create debug output for this patch + + + + Whether to use (true) or (false) mechanics + for -attributed delegate + + + + Default constructor + + + + Creates a patch from a given method + The original method + + + + Creates a patch from a given method + The original method + The patch + A list of harmony IDs that should come after this patch + A list of harmony IDs that should come before this patch + Set to true to generate debug output + + + + Creates a patch from a given method + The patch class/type + The patch method name + The optional argument types of the patch method (for overloaded methods) + + + + Gets the names of all internal patch info fields + A list of field names + + + + Merges annotations + The list of to merge + The merged + + + + Returns a string that represents the annotation + A string representation + + + + Annotation extensions + + + + Copies annotation information + The source + The destination + + + + Clones an annotation + The to clone + A copied + + + + Merges annotations + The master + The detail + A new, merged + + + + Gets all annotations on a class/type + The class/type + A list of all + + + + Gets merged annotations on a class/type + The class/type + The merged + + + + Gets all annotations on a method + The method/constructor + A list of + + + + Gets merged annotations on a method + The method/constructor + The merged + + + + + A mutable representation of an inline signature, similar to Mono.Cecil's CallSite. + Used by the calli instruction, can be used by transpilers + + + + + See + + + + See + + + + See + + + + The list of all parameter types or function pointer signatures received by the call site + + + + The return type or function pointer signature returned by the call site + + + + Returns a string representation of the inline signature + A string representation of the inline signature + + + + + A mutable representation of a parameter type with an attached type modifier, + similar to Mono.Cecil's OptionalModifierType / RequiredModifierType and C#'s modopt / modreq + + + + + Whether this is a modopt (optional modifier type) or a modreq (required modifier type) + + + + The modifier type attached to the parameter type + + + + The modified parameter type + + + + Returns a string representation of the modifier type + A string representation of the modifier type + + + + Patch serialization + + + + Control the binding of a serialized object to a type + Specifies the assembly name of the serialized object + Specifies the type name of the serialized object + The type of the object the formatter creates a new instance of + + + + Serializes a patch info + The + The serialized data + + + + Deserialize a patch info + The serialized data + A + + + + Compare function to sort patch priorities + The patch + Zero-based index + The priority + A standard sort integer (-1, 0, 1) + + + + Serializable patch information + + + + Prefixes as an array of + + + + Postfixes as an array of + + + + Transpilers as an array of + + + + Finalizers as an array of + + + + Returns if any of the patches wants debugging turned on + + + + Adds prefixes + An owner (Harmony ID) + The patch methods + + + + Adds a prefix + + + Removes prefixes + The owner of the prefixes, or * for all + + + + Adds postfixes + An owner (Harmony ID) + The patch methods + + + + Adds a postfix + + + Removes postfixes + The owner of the postfixes, or * for all + + + + Adds transpilers + An owner (Harmony ID) + The patch methods + + + + Adds a transpiler + + + Removes transpilers + The owner of the transpilers, or * for all + + + + Adds finalizers + An owner (Harmony ID) + The patch methods + + + + Adds a finalizer + + + Removes finalizers + The owner of the finalizers, or * for all + + + + Removes a patch using its method + The method of the patch to remove + + + + Gets a concatenated list of patches + The Harmony instance ID adding the new patches + The patches to add + The current patches + + + + Gets a list of patches with any from the given owner removed + The owner of the methods, or * for all + The current patches + + + + A serializable patch + + + + Zero-based index + + + + The owner (Harmony ID) + + + + The priority, see + + + + Keep this patch before the patches indicated in the list of Harmony IDs + + + + Keep this patch after the patches indicated in the list of Harmony IDs + + + + A flag that will log the replacement method via every time this patch is used to build the replacement, even in the future + + + + The method of the static patch method + + + + Creates a patch + The method of the patch + Zero-based index + An owner (Harmony ID) + The priority, see + A list of Harmony IDs for patches that should run after this patch + A list of Harmony IDs for patches that should run before this patch + A flag that will log the replacement method via every time this patch is used to build the replacement, even in the future + + + + Creates a patch + The method of the patch + Zero-based index + An owner (Harmony ID) + + + Get the patch method or a DynamicMethod if original patch method is a patch factory + The original method/constructor + The method of the patch + + + + Determines whether patches are equal + The other patch + true if equal + + + + Determines how patches sort + The other patch + integer to define sort order (-1, 0, 1) + + + + Hash function + A hash code + + + + A PatchClassProcessor used to turn on a class/type into patches + + + + Creates a patch class processor by pointing out a class. Similar to PatchAll() but without searching through all classes. + The Harmony instance + The class to process (need to have at least a [HarmonyPatch] attribute) + + + + Applies the patches + A list of all created replacement methods or null if patch class is not annotated + + + + A group of patches + + + + A collection of prefix + + + + A collection of postfix + + + + A collection of transpiler + + + + A collection of finalizer + + + + Gets all owners (Harmony IDs) or all known patches + The patch owners + + + + Creates a group of patches + An array of prefixes as + An array of postfixes as + An array of transpileres as + An array of finalizeres as + + + + A PatchProcessor handles patches on a method/constructor + + + + Creates an empty patch processor + The Harmony instance + The original method/constructor + + + + Adds a prefix + The prefix as a + A for chaining calls + + + + Adds a prefix + The prefix method + A for chaining calls + + + + Adds a postfix + The postfix as a + A for chaining calls + + + + Adds a postfix + The postfix method + A for chaining calls + + + + Adds a transpiler + The transpiler as a + A for chaining calls + + + + Adds a transpiler + The transpiler method + A for chaining calls + + + + Adds a finalizer + The finalizer as a + A for chaining calls + + + + Adds a finalizer + The finalizer method + A for chaining calls + + + + Gets all patched original methods in the appdomain + An enumeration of patched method/constructor + + + + Applies all registered patches + The generated replacement method + + + + Unpatches patches of a given type and/or Harmony ID + The patch type + Harmony ID or * for any + A for chaining calls + + + + Unpatches a specific patch + The method of the patch + A for chaining calls + + + + Gets patch information on an original + The original method/constructor + The patch information as + + + + Sort patch methods by their priority rules + The original method + Patches to sort + The sorted patch methods + + + + Gets Harmony version for all active Harmony instances + [out] The current Harmony version + A dictionary containing assembly version keyed by Harmony ID + + + + Creates a new empty generator to use when reading method bodies + A new + + + + Creates a new generator matching the method/constructor to use when reading method bodies + The original method/constructor to copy method information from + A new + + + + Returns the methods unmodified list of code instructions + The original method/constructor + Optionally an existing generator that will be used to create all local variables and labels contained in the result (if not specified, an internal generator is used) + A list containing all the original + + + + Returns the methods unmodified list of code instructions + The original method/constructor + A new generator that now contains all local variables and labels contained in the result + A list containing all the original + + + + Returns the methods current list of code instructions after all existing transpilers have been applied + The original method/constructor + Apply only the first count of transpilers + Optionally an existing generator that will be used to create all local variables and labels contained in the result (if not specified, an internal generator is used) + A list of + + + + Returns the methods current list of code instructions after all existing transpilers have been applied + The original method/constructor + A new generator that now contains all local variables and labels contained in the result + Apply only the first count of transpilers + A list of + + + + A low level way to read the body of a method. Used for quick searching in methods + The original method + All instructions as opcode/operand pairs + + + + A low level way to read the body of a method. Used for quick searching in methods + The original method + An existing generator that will be used to create all local variables and labels contained in the result + All instructions as opcode/operand pairs + + + + A patch priority + + + + Patch last + + + + Patch with very low priority + + + + Patch with low priority + + + + Patch with lower than normal priority + + + + Patch with normal priority + + + + Patch with higher than normal priority + + + + Patch with high priority + + + + Patch with very high priority + + + + Patch first + + + + A reverse patcher + + + + Creates a reverse patcher + The Harmony instance + The original method/constructor + Your stand-in stub method as + + + + Applies the patch + The type of patch, see + The generated replacement method + + + + A collection of commonly used transpilers + + + + A transpiler that replaces all occurrences of a given method with another one using the same signature + The enumeration of to act on + Method or constructor to search for + Method or constructor to replace with + Modified enumeration of + + + + A transpiler that alters instructions that match a predicate by calling an action + The enumeration of to act on + A predicate selecting the instructions to change + An action to apply to matching instructions + Modified enumeration of + + + + A transpiler that logs a text at the beginning of the method + The instructions to act on + The log text + Modified enumeration of + + + + A helper class for reflection related functions + + + + Shortcut for to simplify the use of reflections and make it work for any access level + + + + Shortcut for to simplify the use of reflections and make it work for any access level but only within the current type + + + + Enumerates all assemblies in the current app domain, excluding visual studio assemblies + An enumeration of + + + Gets a type by name. Prefers a full name with namespace but falls back to the first type matching the name otherwise + The name + A type or null if not found + + + + Gets all successfully loaded types from a given assembly + The assembly + An array of types + + This calls and returns , while catching any thrown . + If such an exception is thrown, returns the successfully loaded types (, + filtered for non-null values). + + + + + Enumerates all successfully loaded types in the current app domain, excluding visual studio assemblies + An enumeration of all in all assemblies, excluding visual studio assemblies + + + Applies a function going up the type hierarchy and stops at the first non-null result + Result type of func() + The class/type to start with + The evaluation function returning T + The first non-null result, or null if no match + + The type hierarchy of a class or value type (including struct) does NOT include implemented interfaces, + and the type hierarchy of an interface is only itself (regardless of whether that interface implements other interfaces). + The top-most type in the type hierarchy of all non-interface types (including value types) is . + + + + + Applies a function going into inner types and stops at the first non-null result + Generic type parameter + The class/type to start with + The evaluation function returning T + The first non-null result, or null if no match + + + + Gets the reflection information for a directly declared field + The class/type where the field is defined + The name of the field + A field or null when type/name is null or when the field cannot be found + + + + Gets the reflection information for a directly declared field + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + A field or null when the field cannot be found + + + + Gets the reflection information for a field by searching the type and all its super types + The class/type where the field is defined + The name of the field (case sensitive) + A field or null when type/name is null or when the field cannot be found + + + + Gets the reflection information for a field by searching the type and all its super types + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + A field or null when the field cannot be found + + + + Gets the reflection information for a field + The class/type where the field is declared + The zero-based index of the field inside the class definition + A field or null when type is null or when the field cannot be found + + + + Gets the reflection information for a directly declared property + The class/type where the property is declared + The name of the property (case sensitive) + A property or null when type/name is null or when the property cannot be found + + + + Gets the reflection information for a directly declared property + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + A property or null when the property cannot be found + + + + Gets the reflection information for the getter method of a directly declared property + The class/type where the property is declared + The name of the property (case sensitive) + A method or null when type/name is null or when the property cannot be found + + + + Gets the reflection information for the getter method of a directly declared property + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + A method or null when the property cannot be found + + + + Gets the reflection information for the setter method of a directly declared property + The class/type where the property is declared + The name of the property (case sensitive) + A method or null when type/name is null or when the property cannot be found + + + + Gets the reflection information for the Setter method of a directly declared property + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + A method or null when the property cannot be found + + + + Gets the reflection information for a property by searching the type and all its super types + The class/type + The name + A property or null when type/name is null or when the property cannot be found + + + + Gets the reflection information for a property by searching the type and all its super types + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + A property or null when the property cannot be found + + + + Gets the reflection information for the getter method of a property by searching the type and all its super types + The class/type + The name + A method or null when type/name is null or when the property cannot be found + + + + Gets the reflection information for the getter method of a property by searching the type and all its super types + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + A method or null when type/name is null or when the property cannot be found + + + + Gets the reflection information for the setter method of a property by searching the type and all its super types + The class/type + The name + A method or null when type/name is null or when the property cannot be found + + + + Gets the reflection information for the setter method of a property by searching the type and all its super types + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + A method or null when type/name is null or when the property cannot be found + + + + Gets the reflection information for a directly declared method + The class/type where the method is declared + The name of the method (case sensitive) + Optional parameters to target a specific overload of the method + Optional list of types that define the generic version of the method + A method or null when type/name is null or when the method cannot be found + + + + Gets the reflection information for a directly declared method + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + Optional parameters to target a specific overload of the method + Optional list of types that define the generic version of the method + A method or null when the method cannot be found + + + + Gets the reflection information for a method by searching the type and all its super types + The class/type where the method is declared + The name of the method (case sensitive) + Optional parameters to target a specific overload of the method + Optional list of types that define the generic version of the method + A method or null when type/name is null or when the method cannot be found + + + + Gets the reflection information for a method by searching the type and all its super types + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + Optional parameters to target a specific overload of the method + Optional list of types that define the generic version of the method + A method or null when the method cannot be found + + + + Gets the method of an enumerator method + Enumerator method that creates the enumerator + The internal method of the enumerator or null if no valid enumerator is detected + + + Gets the names of all method that are declared in a type + The declaring class/type + A list of method names + + + + Gets the names of all method that are declared in the type of the instance + An instance of the type to search in + A list of method names + + + + Gets the names of all fields that are declared in a type + The declaring class/type + A list of field names + + + + Gets the names of all fields that are declared in the type of the instance + An instance of the type to search in + A list of field names + + + + Gets the names of all properties that are declared in a type + The declaring class/type + A list of property names + + + + Gets the names of all properties that are declared in the type of the instance + An instance of the type to search in + A list of property names + + + + Gets the type of any class member of + A member + The class/type of this member + + + + Test if a class member is actually an concrete implementation + A member + True if the member is a declared + + + + Gets the real implementation of a class member + A member + The member itself if its declared. Otherwise the member that is actually implemented in some base type + + + + Gets the reflection information for a directly declared constructor + The class/type where the constructor is declared + Optional parameters to target a specific overload of the constructor + Optional parameters to only consider static constructors + A constructor info or null when type is null or when the constructor cannot be found + + + + Gets the reflection information for a constructor by searching the type and all its super types + The class/type where the constructor is declared + Optional parameters to target a specific overload of the method + Optional parameters to only consider static constructors + A constructor info or null when type is null or when the method cannot be found + + + + Gets reflection information for all declared constructors + The class/type where the constructors are declared + Optional parameters to only consider static constructors + A list of constructor infos + + + + Gets reflection information for all declared methods + The class/type where the methods are declared + A list of methods + + + + Gets reflection information for all declared properties + The class/type where the properties are declared + A list of properties + + + + Gets reflection information for all declared fields + The class/type where the fields are declared + A list of fields + + + + Gets the return type of a method or constructor + The method/constructor + The return type + + + + Given a type, returns the first inner type matching a recursive search by name + The class/type to start searching at + The name of the inner type (case sensitive) + The inner type or null if type/name is null or if a type with that name cannot be found + + + + Given a type, returns the first inner type matching a recursive search with a predicate + The class/type to start searching at + The predicate to search with + The inner type or null if type/predicate is null or if a type with that name cannot be found + + + + Given a type, returns the first method matching a predicate + The class/type to start searching at + The predicate to search with + The method or null if type/predicate is null or if a type with that name cannot be found + + + + Given a type, returns the first constructor matching a predicate + The class/type to start searching at + The predicate to search with + The constructor info or null if type/predicate is null or if a type with that name cannot be found + + + + Given a type, returns the first property matching a predicate + The class/type to start searching at + The predicate to search with + The property or null if type/predicate is null or if a type with that name cannot be found + + + + Returns an array containing the type of each object in the given array + An array of objects + An array of types or an empty array if parameters is null (if an object is null, the type for it will be object) + + + + Creates an array of input parameters for a given method and a given set of potential inputs + The method/constructor you are planing to call + The possible input parameters in any order + An object array matching the method signature + + + + A readable/assignable reference delegate to an instance field of a class or static field (NOT an instance field of a struct) + + An arbitrary type if the field is static; otherwise the class that defines the field, or a parent class (including ), + implemented interface, or derived class of this type + + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The runtime instance to access the field (ignored and can be omitted for static fields) + A readable/assignable reference to the field + Null instance passed to a non-static field ref delegate + + Instance of invalid type passed to a non-static field ref delegate + (this can happen if is a parent class or interface of the field's declaring type) + + + + This delegate cannot be used for instance fields of structs, since a struct instance passed to the delegate would be passed by + value and thus would be a copy that only exists within the delegate's invocation. This is fine for a readonly reference, + but makes assignment futile. Use instead. + + + Note that is not required to be the field's declaring type. It can be a parent class (including ), + implemented interface, or a derived class of the field's declaring type ("instanceOfT is FieldDeclaringType" must be possible). + Specifically, must be assignable from OR to the field's declaring type. + Technically, this allows Nullable, although Nullable is only relevant for structs, and since only static fields of structs + are allowed for this delegate, and the instance passed to such a delegate is ignored, this hardly matters. + + + Similarly, is not required to be the field's field type, unless that type is a non-enum value type. + It can be a parent class (including object) or implemented interface of the field's field type. It cannot be a derived class. + This variance is not allowed for value types, since that would require boxing/unboxing, which is not allowed for ref values. + Special case for enum types: can also be the underlying integral type of the enum type. + Specifically, for reference types, must be assignable from + the field's field type; for non-enum value types, must be exactly the field's field type; for enum types, + must be either the field's field type or the underyling integral type of that field type. + + + This delegate supports static fields, even those defined in structs, for legacy reasons. + For such static fields, is effectively ignored. + Consider using (and StaticFieldRefAccess methods that return it) instead for static fields. + + + + + + Creates a field reference delegate for an instance field of a class + The class that defines the instance field, or derived class of this type + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The name of the field + A readable/assignable delegate + + + For backwards compatibility, there is no class constraint on . + Instead, the non-value-type check is done at runtime within the method. + + + + + + Creates an instance field reference for a specific instance of a class + The class that defines the instance field, or derived class of this type + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The instance + The name of the field + A readable/assignable reference to the field + + + This method is meant for one-off access to a field's value for a single instance. + If you need to access a field's value for potentially multiple instances, use instead. + FieldRefAccess<T, F>(instance, fieldName) is functionally equivalent to FieldRefAccess<T, F>(fieldName)(instance). + + + For backwards compatibility, there is no class constraint on . + Instead, the non-value-type check is done at runtime within the method. + + + + + + Creates a field reference delegate for an instance field of a class or static field (NOT an instance field of a struct) + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + + The type that defines the field, or derived class of this type; must not be a struct type unless the field is static + + The name of the field + + A readable/assignable delegate with T=object + (for static fields, the instance delegate parameter is ignored) + + + + This method is meant for cases where the given type is only known at runtime and thus can't be used as a type parameter T + in e.g. . + + + This method supports static fields, even those defined in structs, for legacy reasons. + Consider using (and other overloads) instead for static fields. + + + + + + Creates a field reference delegate for an instance field of a class or static field (NOT an instance field of a struct) + type of the field + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + A readable/assignable delegate with T=object + + + Creates a field reference delegate for an instance field of a class or static field (NOT an instance field of a struct) + + An arbitrary type if the field is static; otherwise the class that defines the field, or a parent class (including ), + implemented interface, or derived class of this type ("instanceOfT is FieldDeclaringType" must be possible) + + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The field + A readable/assignable delegate + + + This method is meant for cases where the field has already been obtained, avoiding the field searching cost in + e.g. . + + + This method supports static fields, even those defined in structs, for legacy reasons. + For such static fields, is effectively ignored. + Consider using (and other overloads) instead for static fields. + + + For backwards compatibility, there is no class constraint on . + Instead, the non-value-type check is done at runtime within the method. + + + + + + Creates a field reference for an instance field of a class + + The type that defines the field; or a parent class (including ), implemented interface, or derived class of this type + ("instanceOfT is FieldDeclaringType" must be possible) + + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The instance + The field + A readable/assignable reference to the field + + + This method is meant for one-off access to a field's value for a single instance and where the field has already been obtained. + If you need to access a field's value for potentially multiple instances, use instead. + FieldRefAccess<T, F>(instance, fieldInfo) is functionally equivalent to FieldRefAccess<T, F>(fieldInfo)(instance). + + + For backwards compatibility, there is no class constraint on . + Instead, the non-value-type check is done at runtime within the method. + + + + + + A readable/assignable reference delegate to an instance field of a struct + The struct that defines the instance field + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + A reference to the runtime instance to access the field + A readable/assignable reference to the field + + + + Creates a field reference delegate for an instance field of a struct + The struct that defines the instance field + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The name of the field + A readable/assignable delegate + + + + Creates an instance field reference for a specific instance of a struct + The struct that defines the instance field + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The instance + The name of the field + A readable/assignable reference to the field + + + This method is meant for one-off access to a field's value for a single instance. + If you need to access a field's value for potentially multiple instances, use instead. + StructFieldRefAccess<T, F>(ref instance, fieldName) is functionally equivalent to StructFieldRefAccess<T, F>(fieldName)(ref instance). + + + + + + Creates a field reference delegate for an instance field of a struct + The struct that defines the instance field + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The field + A readable/assignable delegate + + + This method is meant for cases where the field has already been obtained, avoiding the field searching cost in + e.g. . + + + + + + Creates a field reference for an instance field of a struct + The struct that defines the instance field + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The instance + The field + A readable/assignable reference to the field + + + This method is meant for one-off access to a field's value for a single instance and where the field has already been obtained. + If you need to access a field's value for potentially multiple instances, use instead. + StructFieldRefAccess<T, F>(ref instance, fieldInfo) is functionally equivalent to StructFieldRefAccess<T, F>(fieldInfo)(ref instance). + + + + + + A readable/assignable reference delegate to a static field + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + A readable/assignable reference to the field + + + + Creates a static field reference + The type (can be class or struct) the field is defined in + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The name of the field + A readable/assignable reference to the field + + + + Creates a static field reference + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The type (can be class or struct) the field is defined in + The name of the field + A readable/assignable reference to the field + + + + Creates a static field reference + The type of the field + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + A readable/assignable reference to the field + + + + Creates a static field reference + An arbitrary type (by convention, the type the field is defined in) + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The field + A readable/assignable reference to the field + + The type parameter is only used in exception messaging and to distinguish between this method overload + and the overload (which returns a rather than a reference). + + + + + Creates a static field reference delegate + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The field + A readable/assignable delegate + + + + Creates a delegate to a given method + The delegate Type + The method to create a delegate from. + + Only applies for instance methods. If null (default), returned delegate is an open (a.k.a. unbound) instance delegate + where an instance is supplied as the first argument to the delegate invocation; else, delegate is a closed (a.k.a. bound) + instance delegate where the delegate invocation always applies to the given . + + + Only applies for instance methods. If true (default) and is virtual, invocation of the delegate + calls the instance method virtually (the instance type's most-derived/overriden implementation of the method is called); + else, invocation of the delegate calls the exact specified (this is useful for calling base class methods) + Note: if false and is an interface method, an ArgumentException is thrown. + + A delegate of given to given + + + Delegate invocation is more performant and more convenient to use than + at a one-time setup cost. + + + Works for both type of static and instance methods, both open and closed (a.k.a. unbound and bound) instance methods, + and both class and struct methods. + + + + + + Creates a delegate to a given method + The delegate Type + The method in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + + Only applies for instance methods. If null (default), returned delegate is an open (a.k.a. unbound) instance delegate + where an instance is supplied as the first argument to the delegate invocation; else, delegate is a closed (a.k.a. bound) + instance delegate where the delegate invocation always applies to the given . + + + Only applies for instance methods. If true (default) and is virtual, invocation of the delegate + calls the instance method virtually (the instance type's most-derived/overriden implementation of the method is called); + else, invocation of the delegate calls the exact specified (this is useful for calling base class methods) + Note: if false and is an interface method, an ArgumentException is thrown. + + A delegate of given to given + + + Delegate invocation is more performant and more convenient to use than + at a one-time setup cost. + + + Works for both type of static and instance methods, both open and closed (a.k.a. unbound and bound) instance methods, + and both class and struct methods. + + + + + + Creates a delegate for a given delegate definition, attributed with [] + The delegate Type, attributed with [] + + Only applies for instance methods. If null (default), returned delegate is an open (a.k.a. unbound) instance delegate + where an instance is supplied as the first argument to the delegate invocation; else, delegate is a closed (a.k.a. bound) + instance delegate where the delegate invocation always applies to the given . + + A delegate of given to the method specified via [] + attributes on + + This calls with the method and virtualCall arguments + determined from the [] attributes on , + and the given (for closed instance delegates). + + + + + Returns who called the current method + The calling method/constructor (excluding the caller) + + + + Rethrows an exception while preserving its stack trace (throw statement typically clobbers existing stack traces) + The exception to rethrow + + + + True if the current runtime is based on Mono, false otherwise (.NET) + + + + True if the current runtime is .NET Framework, false otherwise (.NET Core or Mono, although latter isn't guaranteed) + + + + True if the current runtime is .NET Core, false otherwise (Mono or .NET Framework) + + + + Throws a missing member runtime exception + The type that is involved + A list of names + + + + Gets default value for a specific type + The class/type + The default value + + + + Creates an (possibly uninitialized) instance of a given type + The class/type + The new instance + + + + Creates an (possibly uninitialized) instance of a given type + The class/type + The new instance + + + + + A cache for the or similar Add methods for different types. + + + + Makes a deep copy of any object + The type of the instance that should be created; for legacy reasons, this must be a class or interface + The original object + A copy of the original object but of type T + + + + Makes a deep copy of any object + The type of the instance that should be created + The original object + [out] The copy of the original object + Optional value transformation function (taking a field name and src/dst instances) + The optional path root to start with + + + + Makes a deep copy of any object + The original object + The type of the instance that should be created + Optional value transformation function (taking a field name and src/dst instances) + The optional path root to start with + The copy of the original object + + + + Tests if a type is a struct + The type + True if the type is a struct + + + + Tests if a type is a class + The type + True if the type is a class + + + + Tests if a type is a value type + The type + True if the type is a value type + + + + Tests if a type is an integer type + The type + True if the type represents some integer + + + + Tests if a type is a floating point type + The type + True if the type represents some floating point + + + + Tests if a type is a numerical type + The type + True if the type represents some number + + + + Tests if a type is void + The type + True if the type is void + + + + Test whether an instance is of a nullable type + Type of instance + An instance to test + True if instance is of nullable type, false if not + + + + Tests whether a type or member is static, as defined in C# + The type or member + True if the type or member is static + + + + Tests whether a type is static, as defined in C# + The type + True if the type is static + + + + Tests whether a property is static, as defined in C# + The property + True if the property is static + + + + Tests whether an event is static, as defined in C# + The event + True if the event is static + + + + Calculates a combined hash code for an enumeration of objects + The objects + The hash code + + + + A CodeInstruction match + + + The name of the match + + + The matched opcodes + + + The matched operands + + + The jumps from the match + + + The jumps to the match + + + The match predicate + + + Creates a code match + The optional opcode + The optional operand + The optional name + + + + Creates a code match that calls a method + The lambda expression using the method + The optional name + + + + Creates a code match that calls a method + The lambda expression using the method + The optional name + + + + Creates a code match + The CodeInstruction + An optional name + + + + Creates a code match + The predicate + An optional name + + + + Returns a string that represents the match + A string representation + + + + A CodeInstruction matcher + + + The current position + The index or -1 if out of bounds + + + + Gets the number of code instructions in this matcher + The count + + + + Checks whether the position of this CodeMatcher is within bounds + True if this CodeMatcher is valid + + + + Checks whether the position of this CodeMatcher is outside its bounds + True if this CodeMatcher is invalid + + + + Gets the remaining code instructions + The remaining count + + + + Gets the opcode at the current position + The opcode + + + + Gets the operand at the current position + The operand + + + + Gets the labels at the current position + The labels + + + + Gets the exception blocks at the current position + The blocks + + + + Creates an empty code matcher + + + Creates a code matcher from an enumeration of instructions + The instructions (transpiler argument) + An optional IL generator + + + + Makes a clone of this instruction matcher + A copy of this matcher + + + + Gets instructions at the current position + The instruction + + + + Gets instructions at the current position with offset + The offset + The instruction + + + + Gets all instructions + A list of instructions + + + + Gets all instructions as an enumeration + A list of instructions + + + + Gets some instructions counting from current position + Number of instructions + A list of instructions + + + + Gets all instructions within a range + The start index + The end index + A list of instructions + + + + Gets all instructions within a range (relative to current position) + The start offset + The end offset + A list of instructions + + + + Gets a list of all distinct labels + The instructions (transpiler argument) + A list of Labels + + + + Reports a failure + The method involved + The logger + True if current position is invalid and error was logged + + + + Throw an InvalidOperationException if current state is invalid (position out of bounds / last match failed) + Explanation of where/why the exception was thrown that will be added to the exception message + The same code matcher + + + + Throw an InvalidOperationException if current state is invalid (position out of bounds / last match failed), + or if the matches do not match at current position + Explanation of where/why the exception was thrown that will be added to the exception message + Some code matches + The same code matcher + + + + Throw an InvalidOperationException if current state is invalid (position out of bounds / last match failed), + or if the matches do not match at any point between current position and the end + Explanation of where/why the exception was thrown that will be added to the exception message + Some code matches + The same code matcher + + + + Throw an InvalidOperationException if current state is invalid (position out of bounds / last match failed), + or if the matches do not match at any point between current position and the start + Explanation of where/why the exception was thrown that will be added to the exception message + Some code matches + The same code matcher + + + + Throw an InvalidOperationException if current state is invalid (position out of bounds / last match failed), + or if the check function returns false + Explanation of where/why the exception was thrown that will be added to the exception message + Function that checks validity of current state. If it returns false, an exception is thrown + The same code matcher + + + + Sets an instruction at current position + The instruction to set + The same code matcher + + + + Sets instruction at current position and advances + The instruction + The same code matcher + + + + Sets opcode and operand at current position + The opcode + The operand + The same code matcher + + + + Sets opcode and operand at current position and advances + The opcode + The operand + The same code matcher + + + + Sets opcode at current position and advances + The opcode + The same code matcher + + + + Sets operand at current position and advances + The operand + The same code matcher + + + + Creates a label at current position + [out] The label + The same code matcher + + + + Creates a label at a position + The position + [out] The new label + The same code matcher + + + + Creates a label at a position + The offset + [out] The new label + The same code matcher + + + + Adds an enumeration of labels to current position + The labels + The same code matcher + + + + Adds an enumeration of labels at a position + The position + The labels + The same code matcher + + + + Sets jump to + Branch instruction + Destination for the jump + [out] The created label + The same code matcher + + + + Inserts some instructions + The instructions + The same code matcher + + + + Inserts an enumeration of instructions + The instructions + The same code matcher + + + + Inserts a branch + The branch opcode + Branch destination + The same code matcher + + + + Inserts some instructions and advances the position + The instructions + The same code matcher + + + + Inserts an enumeration of instructions and advances the position + The instructions + The same code matcher + + + + Inserts a branch and advances the position + The branch opcode + Branch destination + The same code matcher + + + + Removes current instruction + The same code matcher + + + + Removes some instruction from current position by count + Number of instructions + The same code matcher + + + + Removes the instructions in a range + The start + The end + The same code matcher + + + + Removes the instructions in a offset range + The start offset + The end offset + The same code matcher + + + + Advances the current position + The offset + The same code matcher + + + + Moves the current position to the start + The same code matcher + + + + Moves the current position to the end + The same code matcher + + + + Searches forward with a predicate and advances position + The predicate + The same code matcher + + + + Searches backwards with a predicate and reverses position + The predicate + The same code matcher + + + + Matches forward and advances position to beginning of matching sequence + Some code matches + The same code matcher + + + + Matches forward and advances position to ending of matching sequence + Some code matches + The same code matcher + + + + Matches backwards and reverses position to beginning of matching sequence + Some code matches + The same code matcher + + + + Matches backwards and reverses position to ending of matching sequence + Some code matches + The same code matcher + + + + Repeats a match action until boundaries are met + The match action + An optional action that is executed when no match is found + The same code matcher + + + + Gets a match by its name + The match name + An instruction + + + + General extensions for common cases + + + + Joins an enumeration with a value converter and a delimiter to a string + The inner type of the enumeration + The enumeration + An optional value converter (from T to string) + An optional delimiter + The values joined into a string + + + + Converts an array of types (for example methods arguments) into a human readable form + The array of types + A human readable description including brackets + + + + A full description of a type + The type + A human readable description + + + + A a full description of a method or a constructor without assembly details but with generics + The method/constructor + A human readable description + + + + A helper converting parameter infos to types + The array of parameter infos + An array of types + + + + A helper to access a value via key from a dictionary + The key type + The value type + The dictionary + The key + The value for the key or the default value (of T) if that key does not exist + + + + A helper to access a value via key from a dictionary with extra casting + The value type + The dictionary + The key + The value for the key or the default value (of T) if that key does not exist or cannot be cast to T + + + + Escapes Unicode and ASCII non printable characters + The string to convert + The string to convert + A string literal surrounded by + + + + Extensions for + + + + Returns if an is initialized and valid + The + + + + Shortcut for testing whether the operand is equal to a non-null value + The + The value + True if the operand has the same type and is equal to the value + + + + Shortcut for testing whether the operand is equal to a non-null value + The + The value + True if the operand is equal to the value + This is an optimized version of for + + + + Shortcut for code.opcode == opcode && code.OperandIs(operand) + The + The + The operand value + True if the opcode is equal to the given opcode and the operand has the same type and is equal to the given operand + + + + Shortcut for code.opcode == opcode && code.OperandIs(operand) + The + The + The operand value + True if the opcode is equal to the given opcode and the operand is equal to the given operand + This is an optimized version of for + + + + Tests for any form of Ldarg* + The + The (optional) index + True if it matches one of the variations + + + + Tests for Ldarga/Ldarga_S + The + The (optional) index + True if it matches one of the variations + + + + Tests for Starg/Starg_S + The + The (optional) index + True if it matches one of the variations + + + + Tests for any form of Ldloc* + The + The optional local variable + True if it matches one of the variations + + + + Tests for any form of Stloc* + The + The optional local variable + True if it matches one of the variations + + + + Tests if the code instruction branches + The + The label if the instruction is a branch operation or if not + True if the instruction branches + + + + Tests if the code instruction calls the method/constructor + The + The method + True if the instruction calls the method or constructor + + + + Tests if the code instruction loads a constant + The + True if the instruction loads a constant + + + + Tests if the code instruction loads an integer constant + The + The integer constant + True if the instruction loads the constant + + + + Tests if the code instruction loads a floating point constant + The + The floating point constant + True if the instruction loads the constant + + + + Tests if the code instruction loads an enum constant + The + The enum + True if the instruction loads the constant + + + + Tests if the code instruction loads a string constant + The + The string + True if the instruction loads the constant + + + + Tests if the code instruction loads a field + The + The field + Set to true if the address of the field is loaded + True if the instruction loads the field + + + + Tests if the code instruction stores a field + The + The field + True if the instruction stores this field + + + + Adds labels to the code instruction and return it + The + One or several to add + The same code instruction + + + Adds labels to the code instruction and return it + The + An enumeration of + The same code instruction + + + Extracts all labels from the code instruction and returns them + The + A list of + + + Moves all labels from the code instruction to another one + The to move the labels from + The other to move the labels to + The code instruction labels were moved from (now empty) + + + Moves all labels from another code instruction to the current one + The to move the labels to + The other to move the labels from + The code instruction that received the labels + + + Adds ExceptionBlocks to the code instruction and return it + The + One or several to add + The same code instruction + + + Adds ExceptionBlocks to the code instruction and return it + The + An enumeration of + The same code instruction + + + Extracts all ExceptionBlocks from the code instruction and returns them + The + A list of + + + Moves all ExceptionBlocks from the code instruction to another one + The to move the ExceptionBlocks from + The other to move the ExceptionBlocks to + The code instruction blocks were moved from (now empty) + + + Moves all ExceptionBlocks from another code instruction to the current one + The to move the ExceptionBlocks to + The other to move the ExceptionBlocks from + The code instruction that received the blocks + + + General extensions for collections + + + + A simple way to execute code for every element in a collection + The inner type of the collection + The collection + The action to execute + + + + A simple way to execute code for elements in a collection matching a condition + The inner type of the collection + The collection + The predicate + The action to execute + + + + A helper to add an item to a collection + The inner type of the collection + The collection + The item to add + The collection containing the item + + + + A helper to add an item to an array + The inner type of the collection + The array + The item to add + The array containing the item + + + + A helper to add items to an array + The inner type of the collection + The array + The items to add + The array containing the items + + + + General extensions for collections + + + + Tests a class member if it has an IL method body (external methods for example don't have a body) + The member to test + Returns true if the member has an IL body or false if not + + + A file log for debugging + + + + Set this to make Harmony write its log content to this stream + + + + Full pathname of the log file, defaults to a file called harmony.log.txt on your Desktop + + + + The indent character. The default is tab + + + + The current indent level + + + + Changes the indentation level + The value to add to the indentation level + + + + Log a string in a buffered way. Use this method only if you are sure that FlushBuffer will be called + or else logging information is incomplete in case of a crash + The string to log + + + + Logs a list of string in a buffered way. Use this method only if you are sure that FlushBuffer will be called + or else logging information is incomplete in case of a crash + A list of strings to log (they will not be re-indented) + + + + Returns the log buffer and optionally empties it + True to empty the buffer + The buffer. + + + + Replaces the buffer with new lines + The lines to store + + + + Flushes the log buffer to disk (use in combination with LogBuffered) + + + + Log a string directly to disk. Slower method that prevents missing information in case of a crash + The string to log. + + + + Log a string directly to disk if Harmony.DEBUG is true. Slower method that prevents missing information in case of a crash + The string to log. + + + + Resets and deletes the log + + + + Logs some bytes as hex values + The pointer to some memory + The length of bytes to log + + + + A helper class to retrieve reflection info for non-private methods + + + + Given a lambda expression that calls a method, returns the method info + The lambda expression using the method + The method in the lambda expression + + + + Given a lambda expression that calls a method, returns the method info + The generic type + The lambda expression using the method + The method in the lambda expression + + + + Given a lambda expression that calls a method, returns the method info + The generic type + The generic result type + The lambda expression using the method + The method in the lambda expression + + + + Given a lambda expression that calls a method, returns the method info + The lambda expression using the method + The method in the lambda expression + + + + A reflection helper to read and write private elements + The result type defined by GetValue() + + + + Creates a traverse instance from an existing instance + The existing instance + + + + Gets/Sets the current value + The value to read or write + + + + A reflection helper to read and write private elements + + + + Creates a new traverse instance from a class/type + The class/type + A instance + + + + Creates a new traverse instance from a class T + The class + A instance + + + + Creates a new traverse instance from an instance + The object + A instance + + + + Creates a new traverse instance from a named type + The type name, for format see + A instance + + + + Creates a new and empty traverse instance + + + + Creates a new traverse instance from a class/type + The class/type + + + + Creates a new traverse instance from an instance + The object + + + + Gets the current value + The value + + + + Gets the current value + The type of the value + The value + + + + Invokes the current method with arguments and returns the result + The method arguments + The value returned by the method + + + + Invokes the current method with arguments and returns the result + The type of the value + The method arguments + The value returned by the method + + + + Sets a value of the current field or property + The value + The same traverse instance + + + + Gets the type of the current field or property + The type + + + + Moves the current traverse instance to a inner type + The type name + A traverse instance + + + + Moves the current traverse instance to a field + The type name + A traverse instance + + + + Moves the current traverse instance to a field + The type of the field + The type name + A traverse instance + + + + Gets all fields of the current type + A list of field names + + + + Moves the current traverse instance to a property + The type name + Optional property index + A traverse instance + + + + Moves the current traverse instance to a field + The type of the property + The type name + Optional property index + A traverse instance + + + + Gets all properties of the current type + A list of property names + + + + Moves the current traverse instance to a method + The name of the method + The arguments defining the argument types of the method overload + A traverse instance + + + + Moves the current traverse instance to a method + The name of the method + The argument types of the method + The arguments for the method + A traverse instance + + + + Gets all methods of the current type + A list of method names + + + + Checks if the current traverse instance is for a field + True if its a field + + + + Checks if the current traverse instance is for a property + True if its a property + + + + Checks if the current traverse instance is for a method + True if its a method + + + + Checks if the current traverse instance is for a type + True if its a type + + + + Iterates over all fields of the current type and executes a traverse action + Original object + The action receiving a instance for each field + + + + Iterates over all fields of the current type and executes a traverse action + Original object + Target object + The action receiving a pair of instances for each field pair + + + + Iterates over all fields of the current type and executes a traverse action + Original object + Target object + The action receiving a dot path representing the field pair and the instances + + + + Iterates over all properties of the current type and executes a traverse action + Original object + The action receiving a instance for each property + + + + Iterates over all properties of the current type and executes a traverse action + Original object + Target object + The action receiving a pair of instances for each property pair + + + + Iterates over all properties of the current type and executes a traverse action + Original object + Target object + The action receiving a dot path representing the property pair and the instances + + + + A default field action that copies fields to fields + + + + Returns a string that represents the current traverse + A string representation + + + + diff --git a/1.4/Assemblies/0MultiplayerAPI.dll b/1.4/Assemblies/0MultiplayerAPI.dll new file mode 100644 index 0000000..38b8a0e Binary files /dev/null and b/1.4/Assemblies/0MultiplayerAPI.dll differ diff --git a/1.4/Assemblies/Assembly-CSharp-firstpass.dll b/1.4/Assemblies/Assembly-CSharp-firstpass.dll new file mode 100644 index 0000000..3110d7d Binary files /dev/null and b/1.4/Assemblies/Assembly-CSharp-firstpass.dll differ diff --git a/1.4/Assemblies/Assembly-CSharp.dll b/1.4/Assemblies/Assembly-CSharp.dll new file mode 100644 index 0000000..9eaf3d3 Binary files /dev/null and b/1.4/Assemblies/Assembly-CSharp.dll differ diff --git a/1.4/Assemblies/C0ffee's RJW Ideology Addons.dll b/1.4/Assemblies/C0ffee's RJW Ideology Addons.dll new file mode 100644 index 0000000..4d92201 Binary files /dev/null and b/1.4/Assemblies/C0ffee's RJW Ideology Addons.dll differ diff --git a/1.4/Assemblies/ISharpZipLib.dll b/1.4/Assemblies/ISharpZipLib.dll new file mode 100644 index 0000000..bb15d24 Binary files /dev/null and b/1.4/Assemblies/ISharpZipLib.dll differ diff --git a/1.4/Assemblies/NAudio.dll b/1.4/Assemblies/NAudio.dll new file mode 100644 index 0000000..decb8dd Binary files /dev/null and b/1.4/Assemblies/NAudio.dll differ diff --git a/1.4/Assemblies/NVorbis.dll b/1.4/Assemblies/NVorbis.dll new file mode 100644 index 0000000..89d7214 Binary files /dev/null and b/1.4/Assemblies/NVorbis.dll differ diff --git a/1.4/Assemblies/RJW.dll b/1.4/Assemblies/RJW.dll new file mode 100644 index 0000000..cd73522 Binary files /dev/null and b/1.4/Assemblies/RJW.dll differ diff --git a/1.4/Assemblies/Unity.TextMeshPro.dll b/1.4/Assemblies/Unity.TextMeshPro.dll new file mode 100644 index 0000000..ec29a4f Binary files /dev/null and b/1.4/Assemblies/Unity.TextMeshPro.dll differ diff --git a/1.4/Assemblies/UnityEngine.AIModule.dll b/1.4/Assemblies/UnityEngine.AIModule.dll new file mode 100644 index 0000000..78e7704 Binary files /dev/null and b/1.4/Assemblies/UnityEngine.AIModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.ARModule.dll b/1.4/Assemblies/UnityEngine.ARModule.dll new file mode 100644 index 0000000..faa2f92 Binary files /dev/null and b/1.4/Assemblies/UnityEngine.ARModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.AccessibilityModule.dll b/1.4/Assemblies/UnityEngine.AccessibilityModule.dll new file mode 100644 index 0000000..5229d35 Binary files /dev/null and b/1.4/Assemblies/UnityEngine.AccessibilityModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.AndroidJNIModule.dll b/1.4/Assemblies/UnityEngine.AndroidJNIModule.dll new file mode 100644 index 0000000..52d1ec4 Binary files /dev/null and b/1.4/Assemblies/UnityEngine.AndroidJNIModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.AnimationModule.dll b/1.4/Assemblies/UnityEngine.AnimationModule.dll new file mode 100644 index 0000000..6243b6b Binary files /dev/null and b/1.4/Assemblies/UnityEngine.AnimationModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.AssetBundleModule.dll b/1.4/Assemblies/UnityEngine.AssetBundleModule.dll new file mode 100644 index 0000000..4762681 Binary files /dev/null and b/1.4/Assemblies/UnityEngine.AssetBundleModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.AudioModule.dll b/1.4/Assemblies/UnityEngine.AudioModule.dll new file mode 100644 index 0000000..04a092a Binary files /dev/null and b/1.4/Assemblies/UnityEngine.AudioModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.ClothModule.dll b/1.4/Assemblies/UnityEngine.ClothModule.dll new file mode 100644 index 0000000..e9a819d Binary files /dev/null and b/1.4/Assemblies/UnityEngine.ClothModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.ClusterInputModule.dll b/1.4/Assemblies/UnityEngine.ClusterInputModule.dll new file mode 100644 index 0000000..6324fbb Binary files /dev/null and b/1.4/Assemblies/UnityEngine.ClusterInputModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.ClusterRendererModule.dll b/1.4/Assemblies/UnityEngine.ClusterRendererModule.dll new file mode 100644 index 0000000..26ef8fa Binary files /dev/null and b/1.4/Assemblies/UnityEngine.ClusterRendererModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.CoreModule.dll b/1.4/Assemblies/UnityEngine.CoreModule.dll new file mode 100644 index 0000000..83b2b0a Binary files /dev/null and b/1.4/Assemblies/UnityEngine.CoreModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.CrashReportingModule.dll b/1.4/Assemblies/UnityEngine.CrashReportingModule.dll new file mode 100644 index 0000000..7d391bd Binary files /dev/null and b/1.4/Assemblies/UnityEngine.CrashReportingModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.DSPGraphModule.dll b/1.4/Assemblies/UnityEngine.DSPGraphModule.dll new file mode 100644 index 0000000..eba8cc1 Binary files /dev/null and b/1.4/Assemblies/UnityEngine.DSPGraphModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.DirectorModule.dll b/1.4/Assemblies/UnityEngine.DirectorModule.dll new file mode 100644 index 0000000..5976cc5 Binary files /dev/null and b/1.4/Assemblies/UnityEngine.DirectorModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.GameCenterModule.dll b/1.4/Assemblies/UnityEngine.GameCenterModule.dll new file mode 100644 index 0000000..4797dbe Binary files /dev/null and b/1.4/Assemblies/UnityEngine.GameCenterModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.GridModule.dll b/1.4/Assemblies/UnityEngine.GridModule.dll new file mode 100644 index 0000000..61c1ec4 Binary files /dev/null and b/1.4/Assemblies/UnityEngine.GridModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.InputModule.dll b/1.4/Assemblies/UnityEngine.InputModule.dll new file mode 100644 index 0000000..3be4fb9 Binary files /dev/null and b/1.4/Assemblies/UnityEngine.InputModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.JSONSerializeModule.dll b/1.4/Assemblies/UnityEngine.JSONSerializeModule.dll new file mode 100644 index 0000000..cd1981f Binary files /dev/null and b/1.4/Assemblies/UnityEngine.JSONSerializeModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.LocalizationModule.dll b/1.4/Assemblies/UnityEngine.LocalizationModule.dll new file mode 100644 index 0000000..292f854 Binary files /dev/null and b/1.4/Assemblies/UnityEngine.LocalizationModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.ParticleSystemModule.dll b/1.4/Assemblies/UnityEngine.ParticleSystemModule.dll new file mode 100644 index 0000000..c570bbe Binary files /dev/null and b/1.4/Assemblies/UnityEngine.ParticleSystemModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.PerformanceReportingModule.dll b/1.4/Assemblies/UnityEngine.PerformanceReportingModule.dll new file mode 100644 index 0000000..faf6411 Binary files /dev/null and b/1.4/Assemblies/UnityEngine.PerformanceReportingModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.Physics2DModule.dll b/1.4/Assemblies/UnityEngine.Physics2DModule.dll new file mode 100644 index 0000000..65dba8a Binary files /dev/null and b/1.4/Assemblies/UnityEngine.Physics2DModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.PhysicsModule.dll b/1.4/Assemblies/UnityEngine.PhysicsModule.dll new file mode 100644 index 0000000..4a7a9a6 Binary files /dev/null and b/1.4/Assemblies/UnityEngine.PhysicsModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.ScreenCaptureModule.dll b/1.4/Assemblies/UnityEngine.ScreenCaptureModule.dll new file mode 100644 index 0000000..4ec8198 Binary files /dev/null and b/1.4/Assemblies/UnityEngine.ScreenCaptureModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.SpriteMaskModule.dll b/1.4/Assemblies/UnityEngine.SpriteMaskModule.dll new file mode 100644 index 0000000..3de5b54 Binary files /dev/null and b/1.4/Assemblies/UnityEngine.SpriteMaskModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.SpriteShapeModule.dll b/1.4/Assemblies/UnityEngine.SpriteShapeModule.dll new file mode 100644 index 0000000..b59a5b8 Binary files /dev/null and b/1.4/Assemblies/UnityEngine.SpriteShapeModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.StreamingModule.dll b/1.4/Assemblies/UnityEngine.StreamingModule.dll new file mode 100644 index 0000000..69068e5 Binary files /dev/null and b/1.4/Assemblies/UnityEngine.StreamingModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.SubsystemsModule.dll b/1.4/Assemblies/UnityEngine.SubsystemsModule.dll new file mode 100644 index 0000000..b5b7429 Binary files /dev/null and b/1.4/Assemblies/UnityEngine.SubsystemsModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.TerrainModule.dll b/1.4/Assemblies/UnityEngine.TerrainModule.dll new file mode 100644 index 0000000..18b193e Binary files /dev/null and b/1.4/Assemblies/UnityEngine.TerrainModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.TerrainPhysicsModule.dll b/1.4/Assemblies/UnityEngine.TerrainPhysicsModule.dll new file mode 100644 index 0000000..48119b4 Binary files /dev/null and b/1.4/Assemblies/UnityEngine.TerrainPhysicsModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.TextCoreModule.dll b/1.4/Assemblies/UnityEngine.TextCoreModule.dll new file mode 100644 index 0000000..e13a54d Binary files /dev/null and b/1.4/Assemblies/UnityEngine.TextCoreModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.TilemapModule.dll b/1.4/Assemblies/UnityEngine.TilemapModule.dll new file mode 100644 index 0000000..6c43665 Binary files /dev/null and b/1.4/Assemblies/UnityEngine.TilemapModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.UI.dll b/1.4/Assemblies/UnityEngine.UI.dll new file mode 100644 index 0000000..ea17de1 Binary files /dev/null and b/1.4/Assemblies/UnityEngine.UI.dll differ diff --git a/1.4/Assemblies/UnityEngine.UIElementsModule.dll b/1.4/Assemblies/UnityEngine.UIElementsModule.dll new file mode 100644 index 0000000..8dc2716 Binary files /dev/null and b/1.4/Assemblies/UnityEngine.UIElementsModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.UIModule.dll b/1.4/Assemblies/UnityEngine.UIModule.dll new file mode 100644 index 0000000..e082dda Binary files /dev/null and b/1.4/Assemblies/UnityEngine.UIModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.UNETModule.dll b/1.4/Assemblies/UnityEngine.UNETModule.dll new file mode 100644 index 0000000..0234fad Binary files /dev/null and b/1.4/Assemblies/UnityEngine.UNETModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.UnityAnalyticsModule.dll b/1.4/Assemblies/UnityEngine.UnityAnalyticsModule.dll new file mode 100644 index 0000000..e3c39e8 Binary files /dev/null and b/1.4/Assemblies/UnityEngine.UnityAnalyticsModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.UnityConnectModule.dll b/1.4/Assemblies/UnityEngine.UnityConnectModule.dll new file mode 100644 index 0000000..7ec2470 Binary files /dev/null and b/1.4/Assemblies/UnityEngine.UnityConnectModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.UnityWebRequestAssetBundleModule.dll b/1.4/Assemblies/UnityEngine.UnityWebRequestAssetBundleModule.dll new file mode 100644 index 0000000..0024d85 Binary files /dev/null and b/1.4/Assemblies/UnityEngine.UnityWebRequestAssetBundleModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.UnityWebRequestAudioModule.dll b/1.4/Assemblies/UnityEngine.UnityWebRequestAudioModule.dll new file mode 100644 index 0000000..d4f9220 Binary files /dev/null and b/1.4/Assemblies/UnityEngine.UnityWebRequestAudioModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.UnityWebRequestTextureModule.dll b/1.4/Assemblies/UnityEngine.UnityWebRequestTextureModule.dll new file mode 100644 index 0000000..d8b643a Binary files /dev/null and b/1.4/Assemblies/UnityEngine.UnityWebRequestTextureModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.UnityWebRequestWWWModule.dll b/1.4/Assemblies/UnityEngine.UnityWebRequestWWWModule.dll new file mode 100644 index 0000000..b8b8314 Binary files /dev/null and b/1.4/Assemblies/UnityEngine.UnityWebRequestWWWModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.VFXModule.dll b/1.4/Assemblies/UnityEngine.VFXModule.dll new file mode 100644 index 0000000..0895120 Binary files /dev/null and b/1.4/Assemblies/UnityEngine.VFXModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.VRModule.dll b/1.4/Assemblies/UnityEngine.VRModule.dll new file mode 100644 index 0000000..ea9d6fe Binary files /dev/null and b/1.4/Assemblies/UnityEngine.VRModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.VehiclesModule.dll b/1.4/Assemblies/UnityEngine.VehiclesModule.dll new file mode 100644 index 0000000..f7c1085 Binary files /dev/null and b/1.4/Assemblies/UnityEngine.VehiclesModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.VideoModule.dll b/1.4/Assemblies/UnityEngine.VideoModule.dll new file mode 100644 index 0000000..92c9898 Binary files /dev/null and b/1.4/Assemblies/UnityEngine.VideoModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.WindModule.dll b/1.4/Assemblies/UnityEngine.WindModule.dll new file mode 100644 index 0000000..8ac2232 Binary files /dev/null and b/1.4/Assemblies/UnityEngine.WindModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.XRModule.dll b/1.4/Assemblies/UnityEngine.XRModule.dll new file mode 100644 index 0000000..a58bf6a Binary files /dev/null and b/1.4/Assemblies/UnityEngine.XRModule.dll differ diff --git a/1.4/Assemblies/UnityEngine.dll b/1.4/Assemblies/UnityEngine.dll new file mode 100644 index 0000000..d45693c Binary files /dev/null and b/1.4/Assemblies/UnityEngine.dll differ diff --git a/1.4/Assemblies/com.rlabrecque.steamworks.net.dll b/1.4/Assemblies/com.rlabrecque.steamworks.net.dll new file mode 100644 index 0000000..57edb49 Binary files /dev/null and b/1.4/Assemblies/com.rlabrecque.steamworks.net.dll differ diff --git a/C0ffee's RJW Ideology Addons.csproj b/C0ffee's RJW Ideology Addons.csproj index ca47b96..a6721be 100644 --- a/C0ffee's RJW Ideology Addons.csproj +++ b/C0ffee's RJW Ideology Addons.csproj @@ -9,15 +9,16 @@ Properties C0ffee_s_RJW_Ideology_Addons C0ffee%27s RJW Ideology Addons - v4.7.2 + v4.8 512 true + false none false - 1.3\Assemblies\ + 1.4\Assemblies\ DEBUG;TRACE prompt 4 @@ -33,20 +34,17 @@ - ..\..\..\..\workshop\content\294100\2009463077\Current\Assemblies\0Harmony.dll - False + ..\..\..\..\workshop\content\294100\839005762\1.4\Assemblies\0Harmony.dll ..\..\RimWorldWin64_Data\Managed\Assembly-CSharp.dll - False ..\..\..\..\workshop\content\294100\818773962\v1.3\Assemblies\HugsLib.dll False - ..\rjw\1.3\Assemblies\RJW.dll - False + ..\rjw\1.4\Assemblies\RJW.dll @@ -58,11 +56,9 @@ ..\..\RimWorldWin64_Data\Managed\UnityEngine.dll - False ..\..\RimWorldWin64_Data\Managed\UnityEngine.CoreModule.dll - False diff --git a/CRIALactation/1.3/Assemblies/CRIALactation.dll b/CRIALactation/1.3/Assemblies/CRIALactation.dll index 3351ee5..4612335 100644 Binary files a/CRIALactation/1.3/Assemblies/CRIALactation.dll and b/CRIALactation/1.3/Assemblies/CRIALactation.dll differ diff --git a/CRIALactation/1.4/Assemblies/0Harmony.dll b/CRIALactation/1.4/Assemblies/0Harmony.dll new file mode 100644 index 0000000..e182535 Binary files /dev/null and b/CRIALactation/1.4/Assemblies/0Harmony.dll differ diff --git a/CRIALactation/1.4/Assemblies/0Harmony.xml b/CRIALactation/1.4/Assemblies/0Harmony.xml new file mode 100644 index 0000000..f1b9b4c --- /dev/null +++ b/CRIALactation/1.4/Assemblies/0Harmony.xml @@ -0,0 +1,3693 @@ + + + + 0Harmony + + + + A factory to create delegate types + + + Default constructor + + + Creates a delegate type for a method + The method + The new delegate type + + + + A getter delegate type + Type that getter gets field/property value from + Type of the value that getter gets + The instance get getter uses + An delegate + + + + A setter delegate type + Type that setter sets field/property value for + Type of the value that setter sets + The instance the setter uses + The value the setter uses + An delegate + + + + A constructor delegate type + Type that constructor creates + An delegate + + + + A helper class for fast access to getters and setters + + + Creates an instantiation delegate + Type that constructor creates + The new instantiation delegate + + + + Creates an getter delegate for a property + Type that getter reads property from + Type of the property that gets accessed + The property + The new getter delegate + + + + Creates an getter delegate for a field + Type that getter reads field from + Type of the field that gets accessed + The field + The new getter delegate + + + + Creates an getter delegate for a field (with a list of possible field names) + Type that getter reads field/property from + Type of the field/property that gets accessed + A list of possible field names + The new getter delegate + + + + Creates an setter delegate + Type that setter assigns property value to + Type of the property that gets assigned + The property + The new setter delegate + + + + Creates an setter delegate for a field + Type that setter assigns field value to + Type of the field that gets assigned + The field + The new getter delegate + + + + A delegate to invoke a method + The instance + The method parameters + The method result + + + A helper class to invoke method with delegates + + + Creates a fast invocation handler from a method + The method to invoke + Controls if boxed value object is accessed/updated directly + The + + + The directBoxValueAccess option controls how value types passed by reference (e.g. ref int, out my_struct) are handled in the arguments array + passed to the fast invocation handler. + Since the arguments array is an object array, any value types contained within it are actually references to a boxed value object. + Like any other object, there can be other references to such boxed value objects, other than the reference within the arguments array. + For example, + + var val = 5; + var box = (object)val; + var arr = new object[] { box }; + handler(arr); // for a method with parameter signature: ref/out/in int + + + + + If directBoxValueAccess is true, the boxed value object is accessed (and potentially updated) directly when the handler is called, + such that all references to the boxed object reflect the potentially updated value. + In the above example, if the method associated with the handler updates the passed (boxed) value to 10, both box and arr[0] + now reflect the value 10. Note that the original val is not updated, since boxing always copies the value into the new boxed value object. + + + If directBoxValueAccess is false (default), the boxed value object in the arguments array is replaced with a "reboxed" value object, + such that potential updates to the value are reflected only in the arguments array. + In the above example, if the method associated with the handler updates the passed (boxed) value to 10, only arr[0] now reflects the value 10. + + + + + A low level memory helper + + + + Mark method for no inlining (currently only works on Mono) + The method/constructor to change + + + + Detours a method + The original method/constructor + The replacement method/constructor + An error string + + + + Writes a jump to memory + The memory address + Jump destination + An error string + + + + Gets the start of a method in memory + The method/constructor + [out] Details of the exception + The method start address + + + + special parameter names that can be used in prefix and postfix methods + + + Patch function helpers + + + Sorts patch methods by their priority rules + The original method + Patches to sort + Use debug mode + The sorted patch methods + + + + Creates new replacement method with the latest patches and detours the original method + The original method + Information describing the patches + The newly created replacement method + + + + Creates a patch sorter + Array of patches that will be sorted + Use debugging + + + Sorts internal PatchSortingWrapper collection and caches the results. + After first run the result is provided from the cache. + The original method + The sorted patch methods + + + Checks if the sorter was created with the same patch list and as a result can be reused to + get the sorted order of the patches. + List of patches to check against + true if equal + + + Removes one unresolved dependency from the least important patch. + + + Outputs all unblocked patches from the waiting list to results list + + + Adds patch to both results list and handled patches set + Patch to add + + + Wrapper used over the Patch object to allow faster dependency access and + dependency removal in case of cyclic dependencies + + + Create patch wrapper object used for sorting + Patch to wrap + + + Determines how patches sort + The other patch + integer to define sort order (-1, 0, 1) + + + Determines whether patches are equal + The other patch + true if equal + + + Hash function + A hash code + + + Bidirectionally registers Patches as after dependencies + List of dependencies to register + + + Bidirectionally registers Patches as before dependencies + List of dependencies to register + + + Bidirectionally removes Patch from after dependencies + Patch to remove + + + Bidirectionally removes Patch from before dependencies + Patch to remove + + + Specifies the type of method + + + + This is a normal method + + + This is a getter + + + This is a setter + + + This is a constructor + + + This is a static constructor + + + This targets the MoveNext method of the enumerator result + + + Specifies the type of argument + + + + This is a normal argument + + + This is a reference argument (ref) + + + This is an out argument (out) + + + This is a pointer argument (&) + + + Specifies the type of patch + + + + Any patch + + + A prefix patch + + + A postfix patch + + + A transpiler + + + A finalizer + + + A reverse patch + + + Specifies the type of reverse patch + + + + Use the unmodified original method (directly from IL) + + + Use the original as it is right now including previous patches but excluding future ones + + + Specifies the type of method call dispatching mechanics + + + + Call the method using dynamic dispatching if method is virtual (including overriden) + + + This is the built-in form of late binding (a.k.a. dynamic binding) and is the default dispatching mechanic in C#. + This directly corresponds with the instruction. + + + For virtual (including overriden) methods, the instance type's most-derived/overriden implementation of the method is called. + For non-virtual (including static) methods, same behavior as : the exact specified method implementation is called. + + + Note: This is not a fully dynamic dispatch, since non-virtual (including static) methods are still called non-virtually. + A fully dynamic dispatch in C# involves using + the dynamic type + (actually a fully dynamic binding, since even the name and overload resolution happens at runtime), which does not support. + + + + + Call the method using static dispatching, regardless of whether method is virtual (including overriden) or non-virtual (including static) + + + a.k.a. non-virtual dispatching, early binding, or static binding. + This directly corresponds with the instruction. + + + For both virtual (including overriden) and non-virtual (including static) methods, the exact specified method implementation is called, without virtual/override mechanics. + + + + + The base class for all Harmony annotations (not meant to be used directly) + + + + The common information for all attributes + + + Annotation to define your Harmony patch methods + + + + An empty annotation can be used together with TargetMethod(s) + + + + An annotation that specifies a class to patch + The declaring class/type + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The argument types of the method or constructor to patch + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The name of the method, property or constructor to patch + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The name of the method, property or constructor to patch + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The name of the method, property or constructor to patch + An array of argument types to target overloads + Array of + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The + An array of argument types to target overloads + Array of + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The name of the method, property or constructor to patch + The + + + + An annotation that specifies a method, property or constructor to patch + The name of the method, property or constructor to patch + + + + An annotation that specifies a method, property or constructor to patch + The name of the method, property or constructor to patch + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + The name of the method, property or constructor to patch + An array of argument types to target overloads + An array of + + + + An annotation that specifies a method, property or constructor to patch + The name of the method, property or constructor to patch + The + + + + An annotation that specifies a method, property or constructor to patch + The + + + + An annotation that specifies a method, property or constructor to patch + The + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + The + An array of argument types to target overloads + An array of + + + + An annotation that specifies a method, property or constructor to patch + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + An array of argument types to target overloads + An array of + + + + An annotation that specifies a method, property or constructor to patch + The full name of the declaring class/type + The name of the method, property or constructor to patch + The + + + + Annotation to define the original method for delegate injection + + + + An annotation that specifies a class to patch + The declaring class/type + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The argument types of the method or constructor to patch + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The name of the method, property or constructor to patch + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The name of the method, property or constructor to patch + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The name of the method, property or constructor to patch + An array of argument types to target overloads + Array of + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The + An array of argument types to target overloads + Array of + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The name of the method, property or constructor to patch + The + + + + An annotation that specifies a method, property or constructor to patch + The name of the method, property or constructor to patch + + + + An annotation that specifies a method, property or constructor to patch + The name of the method, property or constructor to patch + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + The name of the method, property or constructor to patch + An array of argument types to target overloads + An array of + + + + An annotation that specifies a method, property or constructor to patch + The name of the method, property or constructor to patch + The + + + + An annotation that specifies call dispatching mechanics for the delegate + The + + + + An annotation that specifies a method, property or constructor to patch + The + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + The + An array of argument types to target overloads + An array of + + + + An annotation that specifies a method, property or constructor to patch + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + An array of argument types to target overloads + An array of + + + + Annotation to define your standin methods for reverse patching + + + + An annotation that specifies the type of reverse patching + The of the reverse patch + + + + A Harmony annotation to define that all methods in a class are to be patched + + + + A Harmony annotation + + + + A Harmony annotation to define patch priority + The priority + + + + A Harmony annotation + + + + A Harmony annotation to define that a patch comes before another patch + The array of harmony IDs of the other patches + + + + A Harmony annotation + + + A Harmony annotation to define that a patch comes after another patch + The array of harmony IDs of the other patches + + + + A Harmony annotation + + + A Harmony annotation to debug a patch (output uses to log to your Desktop) + + + + Specifies the Prepare function in a patch class + + + + Specifies the Cleanup function in a patch class + + + + Specifies the TargetMethod function in a patch class + + + + Specifies the TargetMethods function in a patch class + + + + Specifies the Prefix function in a patch class + + + + Specifies the Postfix function in a patch class + + + + Specifies the Transpiler function in a patch class + + + + Specifies the Finalizer function in a patch class + + + + A Harmony annotation + + + + The name of the original argument + + + + The index of the original argument + + + + The new name of the original argument + + + + An annotation to declare injected arguments by name + + + + An annotation to declare injected arguments by index + Zero-based index + + + + An annotation to declare injected arguments by renaming them + Name of the original argument + New name + + + + An annotation to declare injected arguments by index and renaming them + Zero-based index + New name + + + + An abstract wrapper around OpCode and their operands. Used by transpilers + + + + The opcode + + + + The operand + + + + All labels defined on this instruction + + + + All exception block boundaries defined on this instruction + + + + Creates a new CodeInstruction with a given opcode and optional operand + The opcode + The operand + + + + Create a full copy (including labels and exception blocks) of a CodeInstruction + The to copy + + + + Clones a CodeInstruction and resets its labels and exception blocks + A lightweight copy of this code instruction + + + + Clones a CodeInstruction, resets labels and exception blocks and sets its opcode + The opcode + A copy of this CodeInstruction with a new opcode + + + + Clones a CodeInstruction, resets labels and exception blocks and sets its operand + The operand + A copy of this CodeInstruction with a new operand + + + + Creates a CodeInstruction calling a method (CALL) + The class/type where the method is declared + The name of the method (case sensitive) + Optional parameters to target a specific overload of the method + Optional list of types that define the generic version of the method + A code instruction that calls the method matching the arguments + + + + Creates a CodeInstruction calling a method (CALL) + The target method in the form TypeFullName:MethodName, where the type name matches a form recognized by Type.GetType like Some.Namespace.Type. + Optional parameters to target a specific overload of the method + Optional list of types that define the generic version of the method + A code instruction that calls the method matching the arguments + + + + Creates a CodeInstruction calling a method (CALL) + The lambda expression using the method + + + + + Creates a CodeInstruction calling a method (CALL) + The lambda expression using the method + + + + + Creates a CodeInstruction calling a method (CALL) + The lambda expression using the method + + + + + Creates a CodeInstruction calling a method (CALL) + The lambda expression using the method + + + + + Returns an instruction to call the specified closure + The delegate type to emit + The closure that defines the method to call + A that calls the closure as a method + + + + Creates a CodeInstruction loading a field (LD[S]FLD[A]) + The class/type where the field is defined + The name of the field (case sensitive) + Use address of field + + + + Creates a CodeInstruction storing to a field (ST[S]FLD) + The class/type where the field is defined + The name of the field (case sensitive) + + + + Returns a string representation of the code instruction + A string representation of the code instruction + + + + Exception block types + + + + The beginning of an exception block + + + + The beginning of a catch block + + + + The beginning of an except filter block (currently not supported to use in a patch) + + + + The beginning of a fault block + + + + The beginning of a finally block + + + + The end of an exception block + + + + An exception block + + + + Block type + + + + Catch type + + + + Creates an exception block + The + The catch type + + + + The Harmony instance is the main entry to Harmony. After creating one with an unique identifier, it is used to patch and query the current application domain + + + + The unique identifier + + + + Set to true before instantiating Harmony to debug Harmony or use an environment variable to set HARMONY_DEBUG to '1' like this: cmd /C "set HARMONY_DEBUG=1 && game.exe" + This is for full debugging. To debug only specific patches, use the attribute + + + + Creates a new Harmony instance + A unique identifier (you choose your own) + A Harmony instance + + + + Searches the current assembly for Harmony annotations and uses them to create patches + This method can fail to use the correct assembly when being inlined. It calls StackTrace.GetFrame(1) which can point to the wrong method/assembly. If you are unsure or run into problems, use PatchAll(Assembly.GetExecutingAssembly()) instead. + + + + Creates a empty patch processor for an original method + The original method/constructor + A new instance + + + + Creates a patch class processor from an annotated class + The class/type + A new instance + + + + Creates a reverse patcher for one of your stub methods + The original method/constructor + The stand-in stub method as + A new instance + + + + Searches an assembly for Harmony annotations and uses them to create patches + The assembly + + + + Creates patches by manually specifying the methods + The original method/constructor + An optional prefix method wrapped in a object + An optional postfix method wrapped in a object + An optional transpiler method wrapped in a object + An optional finalizer method wrapped in a object + The replacement method that was created to patch the original method + + + + Patches a foreign method onto a stub method of yours and optionally applies transpilers during the process + The original method/constructor you want to duplicate + Your stub method as that will become the original. Needs to have the correct signature (either original or whatever your transpilers generates) + An optional transpiler as method that will be applied during the process + The replacement method that was created to patch the stub method + + + + Unpatches methods by patching them with zero patches. Fully unpatching is not supported. Be careful, unpatching is global + The optional Harmony ID to restrict unpatching to a specific Harmony instance + This method could be static if it wasn't for the fact that unpatching creates a new replacement method that contains your harmony ID + + + + Unpatches a method by patching it with zero patches. Fully unpatching is not supported. Be careful, unpatching is global + The original method/constructor + The + The optional Harmony ID to restrict unpatching to a specific Harmony instance + + + + Unpatches a method by patching it with zero patches. Fully unpatching is not supported. Be careful, unpatching is global + The original method/constructor + The patch method as method to remove + + + + Test for patches from a specific Harmony ID + The Harmony ID + True if patches for this ID exist + + + + Gets patch information for a given original method + The original method/constructor + The patch information as + + + + Gets the methods this instance has patched + An enumeration of original methods/constructors + + + + Gets all patched original methods in the appdomain + An enumeration of patched original methods/constructors + + + + Gets the original method from a given replacement method + A replacement method, for example from a stacktrace + The original method/constructor or null if not found + + + + Tries to get the method from a stackframe including dynamic replacement methods + The + For normal frames, frame.GetMethod() is returned. For frames containing patched methods, the replacement method is returned or null if no method can be found + + + + Gets the original method from the stackframe and uses original if method is a dynamic replacement + The + The original method from that stackframe + + + Gets Harmony version for all active Harmony instances + [out] The current Harmony version + A dictionary containing assembly versions keyed by Harmony IDs + + + + Under Mono, HarmonyException wraps IL compile errors with detailed information about the failure + + + + Default serialization constructor (not implemented) + The info + The context + + + + Get a list of IL instructions in pairs of offset+code + A list of key/value pairs which represent an offset and the code at that offset + + + + Get a list of IL instructions without offsets + A list of + + + + Get the error offset of the errornous IL instruction + The offset + + + + Get the index of the errornous IL instruction + The index into the list of instructions or -1 if not found + + + + A wrapper around a method to use it as a patch (for example a Prefix) + + + + The original method + + + + Class/type declaring this patch + + + + Patch method name + + + + Optional patch + + + + Array of argument types of the patch method + + + + of the patch + + + + Install this patch before patches with these Harmony IDs + + + + Install this patch after patches with these Harmony IDs + + + + Reverse patch type, see + + + + Create debug output for this patch + + + + Whether to use (true) or (false) mechanics + for -attributed delegate + + + + Default constructor + + + + Creates a patch from a given method + The original method + + + + Creates a patch from a given method + The original method + The patch + A list of harmony IDs that should come after this patch + A list of harmony IDs that should come before this patch + Set to true to generate debug output + + + + Creates a patch from a given method + The patch class/type + The patch method name + The optional argument types of the patch method (for overloaded methods) + + + + Gets the names of all internal patch info fields + A list of field names + + + + Merges annotations + The list of to merge + The merged + + + + Returns a string that represents the annotation + A string representation + + + + Annotation extensions + + + + Copies annotation information + The source + The destination + + + + Clones an annotation + The to clone + A copied + + + + Merges annotations + The master + The detail + A new, merged + + + + Gets all annotations on a class/type + The class/type + A list of all + + + + Gets merged annotations on a class/type + The class/type + The merged + + + + Gets all annotations on a method + The method/constructor + A list of + + + + Gets merged annotations on a method + The method/constructor + The merged + + + + + A mutable representation of an inline signature, similar to Mono.Cecil's CallSite. + Used by the calli instruction, can be used by transpilers + + + + + See + + + + See + + + + See + + + + The list of all parameter types or function pointer signatures received by the call site + + + + The return type or function pointer signature returned by the call site + + + + Returns a string representation of the inline signature + A string representation of the inline signature + + + + + A mutable representation of a parameter type with an attached type modifier, + similar to Mono.Cecil's OptionalModifierType / RequiredModifierType and C#'s modopt / modreq + + + + + Whether this is a modopt (optional modifier type) or a modreq (required modifier type) + + + + The modifier type attached to the parameter type + + + + The modified parameter type + + + + Returns a string representation of the modifier type + A string representation of the modifier type + + + + Patch serialization + + + + Control the binding of a serialized object to a type + Specifies the assembly name of the serialized object + Specifies the type name of the serialized object + The type of the object the formatter creates a new instance of + + + + Serializes a patch info + The + The serialized data + + + + Deserialize a patch info + The serialized data + A + + + + Compare function to sort patch priorities + The patch + Zero-based index + The priority + A standard sort integer (-1, 0, 1) + + + + Serializable patch information + + + + Prefixes as an array of + + + + Postfixes as an array of + + + + Transpilers as an array of + + + + Finalizers as an array of + + + + Returns if any of the patches wants debugging turned on + + + + Adds prefixes + An owner (Harmony ID) + The patch methods + + + + Adds a prefix + + + Removes prefixes + The owner of the prefixes, or * for all + + + + Adds postfixes + An owner (Harmony ID) + The patch methods + + + + Adds a postfix + + + Removes postfixes + The owner of the postfixes, or * for all + + + + Adds transpilers + An owner (Harmony ID) + The patch methods + + + + Adds a transpiler + + + Removes transpilers + The owner of the transpilers, or * for all + + + + Adds finalizers + An owner (Harmony ID) + The patch methods + + + + Adds a finalizer + + + Removes finalizers + The owner of the finalizers, or * for all + + + + Removes a patch using its method + The method of the patch to remove + + + + Gets a concatenated list of patches + The Harmony instance ID adding the new patches + The patches to add + The current patches + + + + Gets a list of patches with any from the given owner removed + The owner of the methods, or * for all + The current patches + + + + A serializable patch + + + + Zero-based index + + + + The owner (Harmony ID) + + + + The priority, see + + + + Keep this patch before the patches indicated in the list of Harmony IDs + + + + Keep this patch after the patches indicated in the list of Harmony IDs + + + + A flag that will log the replacement method via every time this patch is used to build the replacement, even in the future + + + + The method of the static patch method + + + + Creates a patch + The method of the patch + Zero-based index + An owner (Harmony ID) + The priority, see + A list of Harmony IDs for patches that should run after this patch + A list of Harmony IDs for patches that should run before this patch + A flag that will log the replacement method via every time this patch is used to build the replacement, even in the future + + + + Creates a patch + The method of the patch + Zero-based index + An owner (Harmony ID) + + + Get the patch method or a DynamicMethod if original patch method is a patch factory + The original method/constructor + The method of the patch + + + + Determines whether patches are equal + The other patch + true if equal + + + + Determines how patches sort + The other patch + integer to define sort order (-1, 0, 1) + + + + Hash function + A hash code + + + + A PatchClassProcessor used to turn on a class/type into patches + + + + Creates a patch class processor by pointing out a class. Similar to PatchAll() but without searching through all classes. + The Harmony instance + The class to process (need to have at least a [HarmonyPatch] attribute) + + + + Applies the patches + A list of all created replacement methods or null if patch class is not annotated + + + + A group of patches + + + + A collection of prefix + + + + A collection of postfix + + + + A collection of transpiler + + + + A collection of finalizer + + + + Gets all owners (Harmony IDs) or all known patches + The patch owners + + + + Creates a group of patches + An array of prefixes as + An array of postfixes as + An array of transpileres as + An array of finalizeres as + + + + A PatchProcessor handles patches on a method/constructor + + + + Creates an empty patch processor + The Harmony instance + The original method/constructor + + + + Adds a prefix + The prefix as a + A for chaining calls + + + + Adds a prefix + The prefix method + A for chaining calls + + + + Adds a postfix + The postfix as a + A for chaining calls + + + + Adds a postfix + The postfix method + A for chaining calls + + + + Adds a transpiler + The transpiler as a + A for chaining calls + + + + Adds a transpiler + The transpiler method + A for chaining calls + + + + Adds a finalizer + The finalizer as a + A for chaining calls + + + + Adds a finalizer + The finalizer method + A for chaining calls + + + + Gets all patched original methods in the appdomain + An enumeration of patched method/constructor + + + + Applies all registered patches + The generated replacement method + + + + Unpatches patches of a given type and/or Harmony ID + The patch type + Harmony ID or * for any + A for chaining calls + + + + Unpatches a specific patch + The method of the patch + A for chaining calls + + + + Gets patch information on an original + The original method/constructor + The patch information as + + + + Sort patch methods by their priority rules + The original method + Patches to sort + The sorted patch methods + + + + Gets Harmony version for all active Harmony instances + [out] The current Harmony version + A dictionary containing assembly version keyed by Harmony ID + + + + Creates a new empty generator to use when reading method bodies + A new + + + + Creates a new generator matching the method/constructor to use when reading method bodies + The original method/constructor to copy method information from + A new + + + + Returns the methods unmodified list of code instructions + The original method/constructor + Optionally an existing generator that will be used to create all local variables and labels contained in the result (if not specified, an internal generator is used) + A list containing all the original + + + + Returns the methods unmodified list of code instructions + The original method/constructor + A new generator that now contains all local variables and labels contained in the result + A list containing all the original + + + + Returns the methods current list of code instructions after all existing transpilers have been applied + The original method/constructor + Apply only the first count of transpilers + Optionally an existing generator that will be used to create all local variables and labels contained in the result (if not specified, an internal generator is used) + A list of + + + + Returns the methods current list of code instructions after all existing transpilers have been applied + The original method/constructor + A new generator that now contains all local variables and labels contained in the result + Apply only the first count of transpilers + A list of + + + + A low level way to read the body of a method. Used for quick searching in methods + The original method + All instructions as opcode/operand pairs + + + + A low level way to read the body of a method. Used for quick searching in methods + The original method + An existing generator that will be used to create all local variables and labels contained in the result + All instructions as opcode/operand pairs + + + + A patch priority + + + + Patch last + + + + Patch with very low priority + + + + Patch with low priority + + + + Patch with lower than normal priority + + + + Patch with normal priority + + + + Patch with higher than normal priority + + + + Patch with high priority + + + + Patch with very high priority + + + + Patch first + + + + A reverse patcher + + + + Creates a reverse patcher + The Harmony instance + The original method/constructor + Your stand-in stub method as + + + + Applies the patch + The type of patch, see + The generated replacement method + + + + A collection of commonly used transpilers + + + + A transpiler that replaces all occurrences of a given method with another one using the same signature + The enumeration of to act on + Method or constructor to search for + Method or constructor to replace with + Modified enumeration of + + + + A transpiler that alters instructions that match a predicate by calling an action + The enumeration of to act on + A predicate selecting the instructions to change + An action to apply to matching instructions + Modified enumeration of + + + + A transpiler that logs a text at the beginning of the method + The instructions to act on + The log text + Modified enumeration of + + + + A helper class for reflection related functions + + + + Shortcut for to simplify the use of reflections and make it work for any access level + + + + Shortcut for to simplify the use of reflections and make it work for any access level but only within the current type + + + + Enumerates all assemblies in the current app domain, excluding visual studio assemblies + An enumeration of + + + Gets a type by name. Prefers a full name with namespace but falls back to the first type matching the name otherwise + The name + A type or null if not found + + + + Gets all successfully loaded types from a given assembly + The assembly + An array of types + + This calls and returns , while catching any thrown . + If such an exception is thrown, returns the successfully loaded types (, + filtered for non-null values). + + + + + Enumerates all successfully loaded types in the current app domain, excluding visual studio assemblies + An enumeration of all in all assemblies, excluding visual studio assemblies + + + Applies a function going up the type hierarchy and stops at the first non-null result + Result type of func() + The class/type to start with + The evaluation function returning T + The first non-null result, or null if no match + + The type hierarchy of a class or value type (including struct) does NOT include implemented interfaces, + and the type hierarchy of an interface is only itself (regardless of whether that interface implements other interfaces). + The top-most type in the type hierarchy of all non-interface types (including value types) is . + + + + + Applies a function going into inner types and stops at the first non-null result + Generic type parameter + The class/type to start with + The evaluation function returning T + The first non-null result, or null if no match + + + + Gets the reflection information for a directly declared field + The class/type where the field is defined + The name of the field + A field or null when type/name is null or when the field cannot be found + + + + Gets the reflection information for a directly declared field + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + A field or null when the field cannot be found + + + + Gets the reflection information for a field by searching the type and all its super types + The class/type where the field is defined + The name of the field (case sensitive) + A field or null when type/name is null or when the field cannot be found + + + + Gets the reflection information for a field by searching the type and all its super types + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + A field or null when the field cannot be found + + + + Gets the reflection information for a field + The class/type where the field is declared + The zero-based index of the field inside the class definition + A field or null when type is null or when the field cannot be found + + + + Gets the reflection information for a directly declared property + The class/type where the property is declared + The name of the property (case sensitive) + A property or null when type/name is null or when the property cannot be found + + + + Gets the reflection information for a directly declared property + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + A property or null when the property cannot be found + + + + Gets the reflection information for the getter method of a directly declared property + The class/type where the property is declared + The name of the property (case sensitive) + A method or null when type/name is null or when the property cannot be found + + + + Gets the reflection information for the getter method of a directly declared property + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + A method or null when the property cannot be found + + + + Gets the reflection information for the setter method of a directly declared property + The class/type where the property is declared + The name of the property (case sensitive) + A method or null when type/name is null or when the property cannot be found + + + + Gets the reflection information for the Setter method of a directly declared property + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + A method or null when the property cannot be found + + + + Gets the reflection information for a property by searching the type and all its super types + The class/type + The name + A property or null when type/name is null or when the property cannot be found + + + + Gets the reflection information for a property by searching the type and all its super types + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + A property or null when the property cannot be found + + + + Gets the reflection information for the getter method of a property by searching the type and all its super types + The class/type + The name + A method or null when type/name is null or when the property cannot be found + + + + Gets the reflection information for the getter method of a property by searching the type and all its super types + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + A method or null when type/name is null or when the property cannot be found + + + + Gets the reflection information for the setter method of a property by searching the type and all its super types + The class/type + The name + A method or null when type/name is null or when the property cannot be found + + + + Gets the reflection information for the setter method of a property by searching the type and all its super types + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + A method or null when type/name is null or when the property cannot be found + + + + Gets the reflection information for a directly declared method + The class/type where the method is declared + The name of the method (case sensitive) + Optional parameters to target a specific overload of the method + Optional list of types that define the generic version of the method + A method or null when type/name is null or when the method cannot be found + + + + Gets the reflection information for a directly declared method + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + Optional parameters to target a specific overload of the method + Optional list of types that define the generic version of the method + A method or null when the method cannot be found + + + + Gets the reflection information for a method by searching the type and all its super types + The class/type where the method is declared + The name of the method (case sensitive) + Optional parameters to target a specific overload of the method + Optional list of types that define the generic version of the method + A method or null when type/name is null or when the method cannot be found + + + + Gets the reflection information for a method by searching the type and all its super types + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + Optional parameters to target a specific overload of the method + Optional list of types that define the generic version of the method + A method or null when the method cannot be found + + + + Gets the method of an enumerator method + Enumerator method that creates the enumerator + The internal method of the enumerator or null if no valid enumerator is detected + + + Gets the names of all method that are declared in a type + The declaring class/type + A list of method names + + + + Gets the names of all method that are declared in the type of the instance + An instance of the type to search in + A list of method names + + + + Gets the names of all fields that are declared in a type + The declaring class/type + A list of field names + + + + Gets the names of all fields that are declared in the type of the instance + An instance of the type to search in + A list of field names + + + + Gets the names of all properties that are declared in a type + The declaring class/type + A list of property names + + + + Gets the names of all properties that are declared in the type of the instance + An instance of the type to search in + A list of property names + + + + Gets the type of any class member of + A member + The class/type of this member + + + + Test if a class member is actually an concrete implementation + A member + True if the member is a declared + + + + Gets the real implementation of a class member + A member + The member itself if its declared. Otherwise the member that is actually implemented in some base type + + + + Gets the reflection information for a directly declared constructor + The class/type where the constructor is declared + Optional parameters to target a specific overload of the constructor + Optional parameters to only consider static constructors + A constructor info or null when type is null or when the constructor cannot be found + + + + Gets the reflection information for a constructor by searching the type and all its super types + The class/type where the constructor is declared + Optional parameters to target a specific overload of the method + Optional parameters to only consider static constructors + A constructor info or null when type is null or when the method cannot be found + + + + Gets reflection information for all declared constructors + The class/type where the constructors are declared + Optional parameters to only consider static constructors + A list of constructor infos + + + + Gets reflection information for all declared methods + The class/type where the methods are declared + A list of methods + + + + Gets reflection information for all declared properties + The class/type where the properties are declared + A list of properties + + + + Gets reflection information for all declared fields + The class/type where the fields are declared + A list of fields + + + + Gets the return type of a method or constructor + The method/constructor + The return type + + + + Given a type, returns the first inner type matching a recursive search by name + The class/type to start searching at + The name of the inner type (case sensitive) + The inner type or null if type/name is null or if a type with that name cannot be found + + + + Given a type, returns the first inner type matching a recursive search with a predicate + The class/type to start searching at + The predicate to search with + The inner type or null if type/predicate is null or if a type with that name cannot be found + + + + Given a type, returns the first method matching a predicate + The class/type to start searching at + The predicate to search with + The method or null if type/predicate is null or if a type with that name cannot be found + + + + Given a type, returns the first constructor matching a predicate + The class/type to start searching at + The predicate to search with + The constructor info or null if type/predicate is null or if a type with that name cannot be found + + + + Given a type, returns the first property matching a predicate + The class/type to start searching at + The predicate to search with + The property or null if type/predicate is null or if a type with that name cannot be found + + + + Returns an array containing the type of each object in the given array + An array of objects + An array of types or an empty array if parameters is null (if an object is null, the type for it will be object) + + + + Creates an array of input parameters for a given method and a given set of potential inputs + The method/constructor you are planing to call + The possible input parameters in any order + An object array matching the method signature + + + + A readable/assignable reference delegate to an instance field of a class or static field (NOT an instance field of a struct) + + An arbitrary type if the field is static; otherwise the class that defines the field, or a parent class (including ), + implemented interface, or derived class of this type + + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The runtime instance to access the field (ignored and can be omitted for static fields) + A readable/assignable reference to the field + Null instance passed to a non-static field ref delegate + + Instance of invalid type passed to a non-static field ref delegate + (this can happen if is a parent class or interface of the field's declaring type) + + + + This delegate cannot be used for instance fields of structs, since a struct instance passed to the delegate would be passed by + value and thus would be a copy that only exists within the delegate's invocation. This is fine for a readonly reference, + but makes assignment futile. Use instead. + + + Note that is not required to be the field's declaring type. It can be a parent class (including ), + implemented interface, or a derived class of the field's declaring type ("instanceOfT is FieldDeclaringType" must be possible). + Specifically, must be assignable from OR to the field's declaring type. + Technically, this allows Nullable, although Nullable is only relevant for structs, and since only static fields of structs + are allowed for this delegate, and the instance passed to such a delegate is ignored, this hardly matters. + + + Similarly, is not required to be the field's field type, unless that type is a non-enum value type. + It can be a parent class (including object) or implemented interface of the field's field type. It cannot be a derived class. + This variance is not allowed for value types, since that would require boxing/unboxing, which is not allowed for ref values. + Special case for enum types: can also be the underlying integral type of the enum type. + Specifically, for reference types, must be assignable from + the field's field type; for non-enum value types, must be exactly the field's field type; for enum types, + must be either the field's field type or the underyling integral type of that field type. + + + This delegate supports static fields, even those defined in structs, for legacy reasons. + For such static fields, is effectively ignored. + Consider using (and StaticFieldRefAccess methods that return it) instead for static fields. + + + + + + Creates a field reference delegate for an instance field of a class + The class that defines the instance field, or derived class of this type + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The name of the field + A readable/assignable delegate + + + For backwards compatibility, there is no class constraint on . + Instead, the non-value-type check is done at runtime within the method. + + + + + + Creates an instance field reference for a specific instance of a class + The class that defines the instance field, or derived class of this type + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The instance + The name of the field + A readable/assignable reference to the field + + + This method is meant for one-off access to a field's value for a single instance. + If you need to access a field's value for potentially multiple instances, use instead. + FieldRefAccess<T, F>(instance, fieldName) is functionally equivalent to FieldRefAccess<T, F>(fieldName)(instance). + + + For backwards compatibility, there is no class constraint on . + Instead, the non-value-type check is done at runtime within the method. + + + + + + Creates a field reference delegate for an instance field of a class or static field (NOT an instance field of a struct) + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + + The type that defines the field, or derived class of this type; must not be a struct type unless the field is static + + The name of the field + + A readable/assignable delegate with T=object + (for static fields, the instance delegate parameter is ignored) + + + + This method is meant for cases where the given type is only known at runtime and thus can't be used as a type parameter T + in e.g. . + + + This method supports static fields, even those defined in structs, for legacy reasons. + Consider using (and other overloads) instead for static fields. + + + + + + Creates a field reference delegate for an instance field of a class or static field (NOT an instance field of a struct) + type of the field + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + A readable/assignable delegate with T=object + + + Creates a field reference delegate for an instance field of a class or static field (NOT an instance field of a struct) + + An arbitrary type if the field is static; otherwise the class that defines the field, or a parent class (including ), + implemented interface, or derived class of this type ("instanceOfT is FieldDeclaringType" must be possible) + + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The field + A readable/assignable delegate + + + This method is meant for cases where the field has already been obtained, avoiding the field searching cost in + e.g. . + + + This method supports static fields, even those defined in structs, for legacy reasons. + For such static fields, is effectively ignored. + Consider using (and other overloads) instead for static fields. + + + For backwards compatibility, there is no class constraint on . + Instead, the non-value-type check is done at runtime within the method. + + + + + + Creates a field reference for an instance field of a class + + The type that defines the field; or a parent class (including ), implemented interface, or derived class of this type + ("instanceOfT is FieldDeclaringType" must be possible) + + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The instance + The field + A readable/assignable reference to the field + + + This method is meant for one-off access to a field's value for a single instance and where the field has already been obtained. + If you need to access a field's value for potentially multiple instances, use instead. + FieldRefAccess<T, F>(instance, fieldInfo) is functionally equivalent to FieldRefAccess<T, F>(fieldInfo)(instance). + + + For backwards compatibility, there is no class constraint on . + Instead, the non-value-type check is done at runtime within the method. + + + + + + A readable/assignable reference delegate to an instance field of a struct + The struct that defines the instance field + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + A reference to the runtime instance to access the field + A readable/assignable reference to the field + + + + Creates a field reference delegate for an instance field of a struct + The struct that defines the instance field + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The name of the field + A readable/assignable delegate + + + + Creates an instance field reference for a specific instance of a struct + The struct that defines the instance field + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The instance + The name of the field + A readable/assignable reference to the field + + + This method is meant for one-off access to a field's value for a single instance. + If you need to access a field's value for potentially multiple instances, use instead. + StructFieldRefAccess<T, F>(ref instance, fieldName) is functionally equivalent to StructFieldRefAccess<T, F>(fieldName)(ref instance). + + + + + + Creates a field reference delegate for an instance field of a struct + The struct that defines the instance field + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The field + A readable/assignable delegate + + + This method is meant for cases where the field has already been obtained, avoiding the field searching cost in + e.g. . + + + + + + Creates a field reference for an instance field of a struct + The struct that defines the instance field + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The instance + The field + A readable/assignable reference to the field + + + This method is meant for one-off access to a field's value for a single instance and where the field has already been obtained. + If you need to access a field's value for potentially multiple instances, use instead. + StructFieldRefAccess<T, F>(ref instance, fieldInfo) is functionally equivalent to StructFieldRefAccess<T, F>(fieldInfo)(ref instance). + + + + + + A readable/assignable reference delegate to a static field + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + A readable/assignable reference to the field + + + + Creates a static field reference + The type (can be class or struct) the field is defined in + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The name of the field + A readable/assignable reference to the field + + + + Creates a static field reference + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The type (can be class or struct) the field is defined in + The name of the field + A readable/assignable reference to the field + + + + Creates a static field reference + The type of the field + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + A readable/assignable reference to the field + + + + Creates a static field reference + An arbitrary type (by convention, the type the field is defined in) + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The field + A readable/assignable reference to the field + + The type parameter is only used in exception messaging and to distinguish between this method overload + and the overload (which returns a rather than a reference). + + + + + Creates a static field reference delegate + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The field + A readable/assignable delegate + + + + Creates a delegate to a given method + The delegate Type + The method to create a delegate from. + + Only applies for instance methods. If null (default), returned delegate is an open (a.k.a. unbound) instance delegate + where an instance is supplied as the first argument to the delegate invocation; else, delegate is a closed (a.k.a. bound) + instance delegate where the delegate invocation always applies to the given . + + + Only applies for instance methods. If true (default) and is virtual, invocation of the delegate + calls the instance method virtually (the instance type's most-derived/overriden implementation of the method is called); + else, invocation of the delegate calls the exact specified (this is useful for calling base class methods) + Note: if false and is an interface method, an ArgumentException is thrown. + + A delegate of given to given + + + Delegate invocation is more performant and more convenient to use than + at a one-time setup cost. + + + Works for both type of static and instance methods, both open and closed (a.k.a. unbound and bound) instance methods, + and both class and struct methods. + + + + + + Creates a delegate to a given method + The delegate Type + The method in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + + Only applies for instance methods. If null (default), returned delegate is an open (a.k.a. unbound) instance delegate + where an instance is supplied as the first argument to the delegate invocation; else, delegate is a closed (a.k.a. bound) + instance delegate where the delegate invocation always applies to the given . + + + Only applies for instance methods. If true (default) and is virtual, invocation of the delegate + calls the instance method virtually (the instance type's most-derived/overriden implementation of the method is called); + else, invocation of the delegate calls the exact specified (this is useful for calling base class methods) + Note: if false and is an interface method, an ArgumentException is thrown. + + A delegate of given to given + + + Delegate invocation is more performant and more convenient to use than + at a one-time setup cost. + + + Works for both type of static and instance methods, both open and closed (a.k.a. unbound and bound) instance methods, + and both class and struct methods. + + + + + + Creates a delegate for a given delegate definition, attributed with [] + The delegate Type, attributed with [] + + Only applies for instance methods. If null (default), returned delegate is an open (a.k.a. unbound) instance delegate + where an instance is supplied as the first argument to the delegate invocation; else, delegate is a closed (a.k.a. bound) + instance delegate where the delegate invocation always applies to the given . + + A delegate of given to the method specified via [] + attributes on + + This calls with the method and virtualCall arguments + determined from the [] attributes on , + and the given (for closed instance delegates). + + + + + Returns who called the current method + The calling method/constructor (excluding the caller) + + + + Rethrows an exception while preserving its stack trace (throw statement typically clobbers existing stack traces) + The exception to rethrow + + + + True if the current runtime is based on Mono, false otherwise (.NET) + + + + True if the current runtime is .NET Framework, false otherwise (.NET Core or Mono, although latter isn't guaranteed) + + + + True if the current runtime is .NET Core, false otherwise (Mono or .NET Framework) + + + + Throws a missing member runtime exception + The type that is involved + A list of names + + + + Gets default value for a specific type + The class/type + The default value + + + + Creates an (possibly uninitialized) instance of a given type + The class/type + The new instance + + + + Creates an (possibly uninitialized) instance of a given type + The class/type + The new instance + + + + + A cache for the or similar Add methods for different types. + + + + Makes a deep copy of any object + The type of the instance that should be created; for legacy reasons, this must be a class or interface + The original object + A copy of the original object but of type T + + + + Makes a deep copy of any object + The type of the instance that should be created + The original object + [out] The copy of the original object + Optional value transformation function (taking a field name and src/dst instances) + The optional path root to start with + + + + Makes a deep copy of any object + The original object + The type of the instance that should be created + Optional value transformation function (taking a field name and src/dst instances) + The optional path root to start with + The copy of the original object + + + + Tests if a type is a struct + The type + True if the type is a struct + + + + Tests if a type is a class + The type + True if the type is a class + + + + Tests if a type is a value type + The type + True if the type is a value type + + + + Tests if a type is an integer type + The type + True if the type represents some integer + + + + Tests if a type is a floating point type + The type + True if the type represents some floating point + + + + Tests if a type is a numerical type + The type + True if the type represents some number + + + + Tests if a type is void + The type + True if the type is void + + + + Test whether an instance is of a nullable type + Type of instance + An instance to test + True if instance is of nullable type, false if not + + + + Tests whether a type or member is static, as defined in C# + The type or member + True if the type or member is static + + + + Tests whether a type is static, as defined in C# + The type + True if the type is static + + + + Tests whether a property is static, as defined in C# + The property + True if the property is static + + + + Tests whether an event is static, as defined in C# + The event + True if the event is static + + + + Calculates a combined hash code for an enumeration of objects + The objects + The hash code + + + + A CodeInstruction match + + + The name of the match + + + The matched opcodes + + + The matched operands + + + The jumps from the match + + + The jumps to the match + + + The match predicate + + + Creates a code match + The optional opcode + The optional operand + The optional name + + + + Creates a code match that calls a method + The lambda expression using the method + The optional name + + + + Creates a code match that calls a method + The lambda expression using the method + The optional name + + + + Creates a code match + The CodeInstruction + An optional name + + + + Creates a code match + The predicate + An optional name + + + + Returns a string that represents the match + A string representation + + + + A CodeInstruction matcher + + + The current position + The index or -1 if out of bounds + + + + Gets the number of code instructions in this matcher + The count + + + + Checks whether the position of this CodeMatcher is within bounds + True if this CodeMatcher is valid + + + + Checks whether the position of this CodeMatcher is outside its bounds + True if this CodeMatcher is invalid + + + + Gets the remaining code instructions + The remaining count + + + + Gets the opcode at the current position + The opcode + + + + Gets the operand at the current position + The operand + + + + Gets the labels at the current position + The labels + + + + Gets the exception blocks at the current position + The blocks + + + + Creates an empty code matcher + + + Creates a code matcher from an enumeration of instructions + The instructions (transpiler argument) + An optional IL generator + + + + Makes a clone of this instruction matcher + A copy of this matcher + + + + Gets instructions at the current position + The instruction + + + + Gets instructions at the current position with offset + The offset + The instruction + + + + Gets all instructions + A list of instructions + + + + Gets all instructions as an enumeration + A list of instructions + + + + Gets some instructions counting from current position + Number of instructions + A list of instructions + + + + Gets all instructions within a range + The start index + The end index + A list of instructions + + + + Gets all instructions within a range (relative to current position) + The start offset + The end offset + A list of instructions + + + + Gets a list of all distinct labels + The instructions (transpiler argument) + A list of Labels + + + + Reports a failure + The method involved + The logger + True if current position is invalid and error was logged + + + + Throw an InvalidOperationException if current state is invalid (position out of bounds / last match failed) + Explanation of where/why the exception was thrown that will be added to the exception message + The same code matcher + + + + Throw an InvalidOperationException if current state is invalid (position out of bounds / last match failed), + or if the matches do not match at current position + Explanation of where/why the exception was thrown that will be added to the exception message + Some code matches + The same code matcher + + + + Throw an InvalidOperationException if current state is invalid (position out of bounds / last match failed), + or if the matches do not match at any point between current position and the end + Explanation of where/why the exception was thrown that will be added to the exception message + Some code matches + The same code matcher + + + + Throw an InvalidOperationException if current state is invalid (position out of bounds / last match failed), + or if the matches do not match at any point between current position and the start + Explanation of where/why the exception was thrown that will be added to the exception message + Some code matches + The same code matcher + + + + Throw an InvalidOperationException if current state is invalid (position out of bounds / last match failed), + or if the check function returns false + Explanation of where/why the exception was thrown that will be added to the exception message + Function that checks validity of current state. If it returns false, an exception is thrown + The same code matcher + + + + Sets an instruction at current position + The instruction to set + The same code matcher + + + + Sets instruction at current position and advances + The instruction + The same code matcher + + + + Sets opcode and operand at current position + The opcode + The operand + The same code matcher + + + + Sets opcode and operand at current position and advances + The opcode + The operand + The same code matcher + + + + Sets opcode at current position and advances + The opcode + The same code matcher + + + + Sets operand at current position and advances + The operand + The same code matcher + + + + Creates a label at current position + [out] The label + The same code matcher + + + + Creates a label at a position + The position + [out] The new label + The same code matcher + + + + Creates a label at a position + The offset + [out] The new label + The same code matcher + + + + Adds an enumeration of labels to current position + The labels + The same code matcher + + + + Adds an enumeration of labels at a position + The position + The labels + The same code matcher + + + + Sets jump to + Branch instruction + Destination for the jump + [out] The created label + The same code matcher + + + + Inserts some instructions + The instructions + The same code matcher + + + + Inserts an enumeration of instructions + The instructions + The same code matcher + + + + Inserts a branch + The branch opcode + Branch destination + The same code matcher + + + + Inserts some instructions and advances the position + The instructions + The same code matcher + + + + Inserts an enumeration of instructions and advances the position + The instructions + The same code matcher + + + + Inserts a branch and advances the position + The branch opcode + Branch destination + The same code matcher + + + + Removes current instruction + The same code matcher + + + + Removes some instruction from current position by count + Number of instructions + The same code matcher + + + + Removes the instructions in a range + The start + The end + The same code matcher + + + + Removes the instructions in a offset range + The start offset + The end offset + The same code matcher + + + + Advances the current position + The offset + The same code matcher + + + + Moves the current position to the start + The same code matcher + + + + Moves the current position to the end + The same code matcher + + + + Searches forward with a predicate and advances position + The predicate + The same code matcher + + + + Searches backwards with a predicate and reverses position + The predicate + The same code matcher + + + + Matches forward and advances position to beginning of matching sequence + Some code matches + The same code matcher + + + + Matches forward and advances position to ending of matching sequence + Some code matches + The same code matcher + + + + Matches backwards and reverses position to beginning of matching sequence + Some code matches + The same code matcher + + + + Matches backwards and reverses position to ending of matching sequence + Some code matches + The same code matcher + + + + Repeats a match action until boundaries are met + The match action + An optional action that is executed when no match is found + The same code matcher + + + + Gets a match by its name + The match name + An instruction + + + + General extensions for common cases + + + + Joins an enumeration with a value converter and a delimiter to a string + The inner type of the enumeration + The enumeration + An optional value converter (from T to string) + An optional delimiter + The values joined into a string + + + + Converts an array of types (for example methods arguments) into a human readable form + The array of types + A human readable description including brackets + + + + A full description of a type + The type + A human readable description + + + + A a full description of a method or a constructor without assembly details but with generics + The method/constructor + A human readable description + + + + A helper converting parameter infos to types + The array of parameter infos + An array of types + + + + A helper to access a value via key from a dictionary + The key type + The value type + The dictionary + The key + The value for the key or the default value (of T) if that key does not exist + + + + A helper to access a value via key from a dictionary with extra casting + The value type + The dictionary + The key + The value for the key or the default value (of T) if that key does not exist or cannot be cast to T + + + + Escapes Unicode and ASCII non printable characters + The string to convert + The string to convert + A string literal surrounded by + + + + Extensions for + + + + Returns if an is initialized and valid + The + + + + Shortcut for testing whether the operand is equal to a non-null value + The + The value + True if the operand has the same type and is equal to the value + + + + Shortcut for testing whether the operand is equal to a non-null value + The + The value + True if the operand is equal to the value + This is an optimized version of for + + + + Shortcut for code.opcode == opcode && code.OperandIs(operand) + The + The + The operand value + True if the opcode is equal to the given opcode and the operand has the same type and is equal to the given operand + + + + Shortcut for code.opcode == opcode && code.OperandIs(operand) + The + The + The operand value + True if the opcode is equal to the given opcode and the operand is equal to the given operand + This is an optimized version of for + + + + Tests for any form of Ldarg* + The + The (optional) index + True if it matches one of the variations + + + + Tests for Ldarga/Ldarga_S + The + The (optional) index + True if it matches one of the variations + + + + Tests for Starg/Starg_S + The + The (optional) index + True if it matches one of the variations + + + + Tests for any form of Ldloc* + The + The optional local variable + True if it matches one of the variations + + + + Tests for any form of Stloc* + The + The optional local variable + True if it matches one of the variations + + + + Tests if the code instruction branches + The + The label if the instruction is a branch operation or if not + True if the instruction branches + + + + Tests if the code instruction calls the method/constructor + The + The method + True if the instruction calls the method or constructor + + + + Tests if the code instruction loads a constant + The + True if the instruction loads a constant + + + + Tests if the code instruction loads an integer constant + The + The integer constant + True if the instruction loads the constant + + + + Tests if the code instruction loads a floating point constant + The + The floating point constant + True if the instruction loads the constant + + + + Tests if the code instruction loads an enum constant + The + The enum + True if the instruction loads the constant + + + + Tests if the code instruction loads a string constant + The + The string + True if the instruction loads the constant + + + + Tests if the code instruction loads a field + The + The field + Set to true if the address of the field is loaded + True if the instruction loads the field + + + + Tests if the code instruction stores a field + The + The field + True if the instruction stores this field + + + + Adds labels to the code instruction and return it + The + One or several to add + The same code instruction + + + Adds labels to the code instruction and return it + The + An enumeration of + The same code instruction + + + Extracts all labels from the code instruction and returns them + The + A list of + + + Moves all labels from the code instruction to another one + The to move the labels from + The other to move the labels to + The code instruction labels were moved from (now empty) + + + Moves all labels from another code instruction to the current one + The to move the labels to + The other to move the labels from + The code instruction that received the labels + + + Adds ExceptionBlocks to the code instruction and return it + The + One or several to add + The same code instruction + + + Adds ExceptionBlocks to the code instruction and return it + The + An enumeration of + The same code instruction + + + Extracts all ExceptionBlocks from the code instruction and returns them + The + A list of + + + Moves all ExceptionBlocks from the code instruction to another one + The to move the ExceptionBlocks from + The other to move the ExceptionBlocks to + The code instruction blocks were moved from (now empty) + + + Moves all ExceptionBlocks from another code instruction to the current one + The to move the ExceptionBlocks to + The other to move the ExceptionBlocks from + The code instruction that received the blocks + + + General extensions for collections + + + + A simple way to execute code for every element in a collection + The inner type of the collection + The collection + The action to execute + + + + A simple way to execute code for elements in a collection matching a condition + The inner type of the collection + The collection + The predicate + The action to execute + + + + A helper to add an item to a collection + The inner type of the collection + The collection + The item to add + The collection containing the item + + + + A helper to add an item to an array + The inner type of the collection + The array + The item to add + The array containing the item + + + + A helper to add items to an array + The inner type of the collection + The array + The items to add + The array containing the items + + + + General extensions for collections + + + + Tests a class member if it has an IL method body (external methods for example don't have a body) + The member to test + Returns true if the member has an IL body or false if not + + + A file log for debugging + + + + Set this to make Harmony write its log content to this stream + + + + Full pathname of the log file, defaults to a file called harmony.log.txt on your Desktop + + + + The indent character. The default is tab + + + + The current indent level + + + + Changes the indentation level + The value to add to the indentation level + + + + Log a string in a buffered way. Use this method only if you are sure that FlushBuffer will be called + or else logging information is incomplete in case of a crash + The string to log + + + + Logs a list of string in a buffered way. Use this method only if you are sure that FlushBuffer will be called + or else logging information is incomplete in case of a crash + A list of strings to log (they will not be re-indented) + + + + Returns the log buffer and optionally empties it + True to empty the buffer + The buffer. + + + + Replaces the buffer with new lines + The lines to store + + + + Flushes the log buffer to disk (use in combination with LogBuffered) + + + + Log a string directly to disk. Slower method that prevents missing information in case of a crash + The string to log. + + + + Log a string directly to disk if Harmony.DEBUG is true. Slower method that prevents missing information in case of a crash + The string to log. + + + + Resets and deletes the log + + + + Logs some bytes as hex values + The pointer to some memory + The length of bytes to log + + + + A helper class to retrieve reflection info for non-private methods + + + + Given a lambda expression that calls a method, returns the method info + The lambda expression using the method + The method in the lambda expression + + + + Given a lambda expression that calls a method, returns the method info + The generic type + The lambda expression using the method + The method in the lambda expression + + + + Given a lambda expression that calls a method, returns the method info + The generic type + The generic result type + The lambda expression using the method + The method in the lambda expression + + + + Given a lambda expression that calls a method, returns the method info + The lambda expression using the method + The method in the lambda expression + + + + A reflection helper to read and write private elements + The result type defined by GetValue() + + + + Creates a traverse instance from an existing instance + The existing instance + + + + Gets/Sets the current value + The value to read or write + + + + A reflection helper to read and write private elements + + + + Creates a new traverse instance from a class/type + The class/type + A instance + + + + Creates a new traverse instance from a class T + The class + A instance + + + + Creates a new traverse instance from an instance + The object + A instance + + + + Creates a new traverse instance from a named type + The type name, for format see + A instance + + + + Creates a new and empty traverse instance + + + + Creates a new traverse instance from a class/type + The class/type + + + + Creates a new traverse instance from an instance + The object + + + + Gets the current value + The value + + + + Gets the current value + The type of the value + The value + + + + Invokes the current method with arguments and returns the result + The method arguments + The value returned by the method + + + + Invokes the current method with arguments and returns the result + The type of the value + The method arguments + The value returned by the method + + + + Sets a value of the current field or property + The value + The same traverse instance + + + + Gets the type of the current field or property + The type + + + + Moves the current traverse instance to a inner type + The type name + A traverse instance + + + + Moves the current traverse instance to a field + The type name + A traverse instance + + + + Moves the current traverse instance to a field + The type of the field + The type name + A traverse instance + + + + Gets all fields of the current type + A list of field names + + + + Moves the current traverse instance to a property + The type name + Optional property index + A traverse instance + + + + Moves the current traverse instance to a field + The type of the property + The type name + Optional property index + A traverse instance + + + + Gets all properties of the current type + A list of property names + + + + Moves the current traverse instance to a method + The name of the method + The arguments defining the argument types of the method overload + A traverse instance + + + + Moves the current traverse instance to a method + The name of the method + The argument types of the method + The arguments for the method + A traverse instance + + + + Gets all methods of the current type + A list of method names + + + + Checks if the current traverse instance is for a field + True if its a field + + + + Checks if the current traverse instance is for a property + True if its a property + + + + Checks if the current traverse instance is for a method + True if its a method + + + + Checks if the current traverse instance is for a type + True if its a type + + + + Iterates over all fields of the current type and executes a traverse action + Original object + The action receiving a instance for each field + + + + Iterates over all fields of the current type and executes a traverse action + Original object + Target object + The action receiving a pair of instances for each field pair + + + + Iterates over all fields of the current type and executes a traverse action + Original object + Target object + The action receiving a dot path representing the field pair and the instances + + + + Iterates over all properties of the current type and executes a traverse action + Original object + The action receiving a instance for each property + + + + Iterates over all properties of the current type and executes a traverse action + Original object + Target object + The action receiving a pair of instances for each property pair + + + + Iterates over all properties of the current type and executes a traverse action + Original object + Target object + The action receiving a dot path representing the property pair and the instances + + + + A default field action that copies fields to fields + + + + Returns a string that represents the current traverse + A string representation + + + + diff --git a/CRIALactation/1.4/Assemblies/0MultiplayerAPI.dll b/CRIALactation/1.4/Assemblies/0MultiplayerAPI.dll new file mode 100644 index 0000000..38b8a0e Binary files /dev/null and b/CRIALactation/1.4/Assemblies/0MultiplayerAPI.dll differ diff --git a/CRIALactation/1.4/Assemblies/Assembly-CSharp-firstpass.dll b/CRIALactation/1.4/Assemblies/Assembly-CSharp-firstpass.dll new file mode 100644 index 0000000..3110d7d Binary files /dev/null and b/CRIALactation/1.4/Assemblies/Assembly-CSharp-firstpass.dll differ diff --git a/CRIALactation/1.4/Assemblies/Assembly-CSharp.dll b/CRIALactation/1.4/Assemblies/Assembly-CSharp.dll new file mode 100644 index 0000000..9eaf3d3 Binary files /dev/null and b/CRIALactation/1.4/Assemblies/Assembly-CSharp.dll differ diff --git a/CRIALactation/1.4/Assemblies/CRIALactation.dll b/CRIALactation/1.4/Assemblies/CRIALactation.dll new file mode 100644 index 0000000..df8d0f8 Binary files /dev/null and b/CRIALactation/1.4/Assemblies/CRIALactation.dll differ diff --git a/CRIALactation/1.4/Assemblies/HugsLib.dll b/CRIALactation/1.4/Assemblies/HugsLib.dll new file mode 100644 index 0000000..cbd145f Binary files /dev/null and b/CRIALactation/1.4/Assemblies/HugsLib.dll differ diff --git a/CRIALactation/1.4/Assemblies/HugsLib.xml b/CRIALactation/1.4/Assemblies/HugsLib.xml new file mode 100644 index 0000000..d156b74 --- /dev/null +++ b/CRIALactation/1.4/Assemblies/HugsLib.xml @@ -0,0 +1,1467 @@ + + + + HugsLib + + + + + Informs the player about a mod that requires a later version of HugsLib than the one running. + Also has button to open the download link in the Steam or system browser. + + + + + Entry point for the library. + Instantiated by the game at the start of DoPlayLoad(). + + + + + Loads and stores textures from the HugsLib /Textures folder + + + + + Handles the key presses for key bindings added by HugsLib + + + + + Checks the current version of the library against the About.xml -> requiredLibraryVersion of all mods. + Shows a popup window () if one of the loaded mods requires a + more recent version of the library. + + + + + Ensures that the library comes after Core in the load order and displays a warning dialog otherwise. + + + + + Provides support for reading version information from Manifest.xml files. + These files are used in mods by Fluffy and a a few other authors. + + + + + Attempts to read and parse the manifest file for a mod. + + + Returns null if reading or parsing fails for any reason. + + + + + Reads and parses the manifest file for a mod. + + + Returns null if the file does not exist. + + + + + Checks for Dev mode and bypasses the Restart message box. + Holding Shift will prevent the automatic restart. + + + + + Provides an entry point for late controller setup during static constructor initialization. + + + + + Forwards ticks to the controller. Will not be saved and is never spawned. + + + + + Holds references to key binding defs used by the library. + + + + + A base for managers that save data in xml format, to be stored in the save data folder + + + + + This is added as a component to the GameObject on scene to forward events to the controller. + + + + + Represents the information stored in the About/Version.xml file. + Since we cannot update the version of the library assembly, we have to store the version externally. + + + + + A shorter, invariable alternative to System.Version in the format of major.minor.patch + Also known as a semantic version number. + System.Version can be implicitly cast to this type. + VersionShort is no longer used by HugsLib internally, and the type is retained for backwards compatibility. + + + + + The extended update news dialog, with filtering by mod and a menu button in entry headers for dev mode actions. + + + + + Handles the custom loading mechanics of s. + + + + + Filters s by their mod identifier. + + + + + Provides the options for the dev tools dropdown menu in the extended update news dialog. + + + + + Displays a list to update feature defs with basic image and formatting support. See for proper syntax. + + + + + Stores the highest displayed update news version for all mods that provide update news via . + Defs are loaded from the News folder in the root mod directory. + + + + + Shows the news dialog window when there are not yet displayed news items available. + + Pass true to disable filtering based on what has + and has not been seen and open the dialog with all available news items. + true, if there have been found news items that were not displayed before, and the dialog has been opened + + + + Rewire the main menu "Dev quicktest" button to trigger the HugsLib quickstarter. + + + + + Hooks into the flow of the vanilla MonoBehavior.OnGUI() + This allows to take advantage of automatic UI scaling and prevents GUI updates during a loading screen. + + + + + Adds an entry point to draw and additional debug button on the toolbar. + The infix is necessary to catch the WidgetRow that the stock buttons are drawn to. + + + + + Extends the width of the immediate window the dev toolbar buttons are drawn to to accommodate an additional button + + + + + Adds a hook for the early initialization of a Game. + + + + + Forces a game restart after a language change. + This is necessary to avoid creating problems for running mods caused by reloaded graphics and defs. + + + + + Adds a hook for discarding maps. + + + + + Adds extra buttons to the Log window. + + + + + Adds a hook to produce the WorldLoaded callback for ModBase mods. + + + + + Adds a hook to produce the MapGenerated callback for ModBase mods. + + + + + Adds a hook to produce the MapComponentsInitializing callback for ModBase mods. + + + + + Adds a hook to produce the MapLoaded callback for ModBase mods. + + + + + Restarts the game automatically, bypassing the message dialog, if changes in the mod configuration have been made and dev mode is on. + Holding Shift will prevent the restart, while allowing the config changes to still be saved. + + + + + Adds a hook to produce the DefsLoaded callback for ModBase mods. + + + + + Hooks into the flow of the vanilla MonoBehavior.Update() + + + + + Hooks into the flow of the vanilla MonoBehavior.OnGUI(). + Unlike the patch, this hook also + allows to receive OnGUI events during loading screens. + + + + + Displays at game startup when the quickstarter is scheduled to run. + Shows the pending operation and allows to abort or disable the quickstart. + + + + + Allows to change settings related to the custom quickstart functionality. + Strings are not translated, since this is a tool exclusively for modders. + + + + + Manages the custom quickstart functionality. + Will trigger map loading and generation when the appropriate settings are present, and draws an additional dev toolbar button. + + + + + Wraps settings related to the Quickstart system for storage in a SettingHandle. + + + + + Caches the result of a string translation for performance. + Also caches the calculated size of the label that would accomodate the translated string. + + + + + Contains data used for the creation of a . + + + + + A name for the entry to show to the player. + + + + + The delegate that will be called when the menu entry is clicked. + + + + + Set to true to make a greyed-out, non-selectable menu entry. + + + + + + + + + Helper methods for drawing elements and controls that appear in the window. + + + + + Draws a hovering menu of 2 buttons: info and menu. + + + Text for the info button tooltip. Null to disable. + When false, the menu button is semi-transparent and non-interactable + When true, uses menu-with-plus-badge icon for the button + true if the menu button was clicked + + + + Draws the menu button for the hovering menu. + + + When false, the button is semi-transparent and non-interactable + When true, uses menu-with-plus-badge icon for the button + true if the menu button was clicked + + + + Used to preserve the state of the Mod Settings window between multiple openings. + State is not persisted between game restarts. + + + + + Utility methods for SettingHandleConvertible data objects. + These are useful for packing and unpacking your custom fields into a string without bothering with manual serialization. + + + + + Deserializes an XML string into an existing object instance. + + The serialized values to fill the object with + The object to receive the deserialized values + + + + Serializes an object into a compact XML string. + Whitespace and namespace declarations are omitted. + Make sure the object is annotated with SerializableAttribute and the fields to serialize with XmlElementAttribute. + + The object to serialize + + + + An options window for settings exposed by mods using the library + + + + + Base type for all custom SettingHandle types. + Allows complex data structures to be stored in setting values by converting them to and from their string representation. + See for an easy way to serialize complex types to XML. + + + + + Return false to prevent this object from serializing and being written to file. + + + + + Called when settings handles of this type load an existing value. + Should deserialize and restore the state of the object using the provided string. + + + + + Called when handles of this type are being saved, and only if return true. + Should serialize the state of the object into a string so it can be restored later. + + + + + A set of useful value constraints for use with SettingHandle + + + + + A group of settings values added by a mod. Each mod has their own ModSettingsPack. + Loaded values are stored until they are "claimed" by their mod by requesting a handle for a setting with the same name. + + + + + Identifier of the mod that owns this pack + + + + + The name of the owning mod that will display is the Mod Settings dialog + + + + + Additional context menu options for this entry in the mod settings dialog. + Will be shown when the hovering menu button for this entry is clicked. + + + + + Returns true if any handles retrieved from this pack have had their values changed. + Resets to false after the changes are saved. + + + + + Enumerates the handles that have been registered with this pack up to this point. + + + + + Retrieves an existing SettingHandle from the pack, or creates a new one. + Loaded settings will only display in the Mod Settings dialog after they have been claimed using this method. + + The type of setting value you are creating. + Unique identifier for the setting. Must be unique for this specific pack only. + A display name for the setting that will show up next to it in the Mod Settings dialog. Recommended to keep this short. + A description for the setting that will appear in a tooltip when the player hovers over the setting in the Mod Settings dialog. + The value the setting will assume when newly created and when the player resets the setting to its default. + An optional delegate that will be called when a new value is about to be assigned to the handle. Receives a string argument and must return a bool to indicate if the passed value is valid for the setting. + Used only for Enum settings. Enum values are displayed in a readable format by the following method: Translate(prefix+EnumValueName) + + + + Returns a handle that was already created. + Will return null if the handle does not exist yet. + + Throws an exception if the referenced handle does not match the provided type + The name of the handle to retrieve + + + + Attempts to retrieve a setting value by name. + If a handle for that value has already been created, returns that handle's StringValue. + Otherwise will return the unclaimed value that was loaded from the XML file. + Will return null if the value does not exist. + + The name of the setting the value of which should be retrieved + + + + Returns true, if there is a setting value that can be retrieved with PeekValue. + This includes already created handles and unclaimed values. + + The name of the setting to check + + + + Deletes a setting loaded from the xml file before it is claimed using GetHandle. + Useful for cleaning up settings that are no longer in use. + + The identifier of the setting (handle identifier) + + + + Prompts the to save changes if any or the registered + s have handles with unsaved changes + + + + + A central place for mods to store persistent settings. Individual settings are grouped by mod using ModSettingsPack + + + + + Fires when is called and changes are about to be saved. + Use and to identify changed packs, + and with to identify changed handles. + + + + + Fires when is called and the settings file has just been written to disk. + + + + + Enumerates the s that have been registered up to this point. + + + + + Returns true when there are handles with values that have changed since the last time settings were saved. + + + + + Retrieves the for a given mod identifier. + + The unique identifier of the mod that owns the pack + If not null, assigns the property of the pack. + This will be displayed in the Mod Settings dialog as a header. + + + + Saves all settings to disk and notifies all ModBase mods by calling SettingsChanged() + + + + + Removes a settings pack for a mod if it exists. Use SaveChanges to apply the change afterward. + + The identifier of the mod owning the pack + + + + An individual persistent setting owned by a mod. + The extra layer of inheritance allows for type abstraction and storing SettingHandles in lists. + + + + + Unique identifier of the setting. + + + + + Name displayed in the settings menu. + + + + + Displayed as a tooltip in the settings menu. + + + + + Should return true if the passed value is valid for this setting. Optional. + + + + + The string identifier prefix used to display enum values in the settings menu (e.g. "prefix_" for "prefix_EnumValue") + + + + + Return true to make this setting visible in the menu. Optional. + An invisible setting can still be reset to default using the Reset All button. + + + + + Draw a custom control for the settings menu entry. Entry name is already drawn when this is called. + Optional. Return value indicates if the handle value was changed during the drawer call. + + + + + Fully override the drawing of the settings menu entry for this handle. + This replaces both the title and the control half of the entry. + Optional. Return value indicates if the handle value was changed during the drawer call. + + + The following built-in handle drawing features are also disabled when this property is assigned: + hovering info/menu buttons (). + + + + + When true, setting will never appear. For serialized data. + No longer affects value resetting, see + + + + + When true (true by default), the setting can be reset to its default value by the player. + If the handle is visible, this can be done through the right-click menu, or using the "Reset all" button. + Disabling this is generally not recommended, except for specific use cases (for example, content unlocked by the player). + + + + + When true, will not save this setting to the xml file. Useful in conjunction with CustomDrawer for placing buttons in the settings menu. + + + + + Specifies by how much the + and - buttons should change a numeric setting. + + + + + When CustomDrawer is used, specifies the height of the row for the handle. Leave at 0 for default height. + + + + + Affects the order in which handles appear in the settings menu. Lower comes first, default is 0. + + + + + Returns true if the of this handle has been modified + after the creation of the handle or the last time its value was saved. + Automatically resets to false when saves changes. + Can be manually toggled when e.g. replacing null with an instance in a handle. + + + + + Additional context menu options for the entry of this handle in the mod settings dialog. + Will be shown when the hovering menu button for this entry is clicked. + + + The "Reset to default" option is always present, but will be disabled if is false. + + + + + Marks the handle as modified and forces all settings to be saved. + This is necessary for values, as changes in reference types cannot be automatically detected. + + + + + Dispatched after the Value of the handle changes. + + + + + Implicitly cast handles to the Value they carry. + + + + + Called when the Value of the handle changes. Optional. + + + + + The actual value of the setting. + This is converted to its string representation when settings are saved. + Assigning a new value will trigger the OnValueChanged delegate. + + + + + The value the setting assumes when initially created or reset. + + + + + Retrieves the string representation of the setting or assigns a new setting value using a string. + Will trigger the Validator delegate if assigned and change the Value property if the validation passes. + + + + + Returns the type of the handle Value property. + + + + + Assigns the default value to the Value property. + Ignores the property. + + + + + Returns true if the handle is set to its default value. + + + + + + Keeps track of mod packageIds that ever were loaded together with HugsLib + by the player and the first/last time they were seen. + + + + + Sets the "first time seen" status of a packageId until the game is restarted. + + Throws on null packageId + + + + Returns true if the provided packageId was recorded for the first time during the current run. + + Throws on null packageId + + + + Returns true if the provided mod packageId was at any time seen running together with HugsLib. + + Throws on null packageId + + + + Used by to track mod packageIds loaded from the XML file. + + + + + Used to indicate that a type should be instantiated at the earliest moment possible. + Specifically, when classes are instantiated (see .DoPlayLoad()). + If is true, Harmony patching will also happen at that time. + + + + + The front-end for LogPublisher. + Shows the status of the upload operation, provides controls and shows the produced URL. + + + + + Collects the game logs and loaded mods and posts the information on GitHub as a gist. + + + + + Allows adding custom buttons to the EditWindow_Log window. + + + + + Alignment side for custom widgets. + + + + + Callback to draw log window widgets in. + + The log window being dawn. + Window area for custom widgets. + The currently selected log message, or null. + Draw your widget using this to automatically align it with the others. + + + + Adds a new drawing callback to the log window widget drawer. + + The delegate called each OnGUI to draw the widget. + The side of the WidgetRow this widget should be drawn into. + + + + Commands start a new process on the target machine using platform specific commands and args to pass to the shell. + Refer to the Microsoft documentation for dotNet 3.5 for more info on a process. + https://msdn.microsoft.com/en-us/library/system.diagnostics.process(v=vs.90).aspx + + + + + A command to open a directory in the systems default file explorer. + Since Unity's OpenUrl() is broken on OS X, we can use a shell to do it correctly. + + + + + A Command to open the log file in the systems default text editor. + + + + + The hub of the library. Instantiates classes that extend ModBase and forwards some of the more useful events to them. + The assembly version of the library should reflect the current major Rimworld version, i.e.: 0.18.0.0 for B18. + This gives us the ability to release updates to the library without breaking compatibility with the mods that implement it. + See Core.HugsLibMod for the entry point. + + + + + The base class for all mods using HugsLib library. All classes extending ModBase will be instantiated + automatically by at game initialization. + Can be annotated with to initialize the mod at + initialization time and have be called. + + + + + This can be used to log messages specific to your mod. + It will prefix everything with your ModIdentifier. + + + + + The ModSettingsPack specific to your mod. + Use this to create settings handles that represent the values of saved settings. + + + + + Override this and return false to prevent a Harmony instance from being automatically created and scanning your assembly for patches. + + + + + The reference to Harmony instance that applied the patches in your assembly. + + + + + A unique identifier used both as and . + Override them separately if different identifiers are needed or no should be assigned to . + Must start with a letter and contain any of [A-z, 0-9, -, _, :] (identifier must be valid as an XML tag name). + + + This is no longer used to identify mods since 7.0 (Rimworld 1.1). Use ModBase.ModContentPack.PackageId to that end instead. + + + + + A unique identifier to use as a key when settings are stored for this mod by . + Must start with a letter and contain any of [A-z, 0-9, -, _, :] (identifier must be valid as an XML tag name). + By default uses the PackageId of the implementing mod. + Returning null will prevent the property from being assigned. + + + + + A readable identifier for the mod, used as a prefix by and in various error messages. + Appear as "[LogIdentifier] message" when using . + By default uses the non-lowercase PackageId of the implementing mod or the type name if that is not set. + + + + + The null-checked version of . + Returns the type name if is null. + + + + + The content pack for the mod containing the assembly this class belongs to + + + + + Can be false if the mod was enabled at game start and then disabled in the mods menu. + Always true, unless the of the declaring mod can't be + identified for some unexpected reason. + + + + + Contains the AssemblyVersion and AssemblyFileVersion of the mod. Used by . + + + + + Return the override version from the Version.xml file if specified, + or the higher one between AssemblyVersion and AssemblyFileVersion + + + + + Called during HugsLib instantiation, accounting for mod load order. + Load order among mods implementing is respected. + and only if the implementing class is annotated with . + + + + + Called when HugsLib receives the call. + Load order among mods implementing is respected. + Called after the static constructors for non-HugsLib mods have executed. Is not called again on def reload + + + + + An alias for , both or either can be used, + although makes for clearer code by indicating when the method is called. + + + + + Called on each tick when in Play scene + + The sequential number of the tick being processed + + + + Called each frame + + + + + Called each unity physics update + + + + + Called on each unity gui event, after UIRoot.UIRootOnGUI. + Respects UI scaling and screen fading. Will not be called during loading screens. + This is a good place to listen for hotkey events. + + + + + Called when GameState.Playing has been entered and the world is fully loaded in the Play scene. + Will not be called during world generation and landing site selection. + + + + + Called right after Map.ConstructComponents() (before MapLoaded) + + The map being initialized + + + + Called right after a new map has been generated. + This is the equivalent of MapComponent.MapGenerated(). + + The new map that has just finished generating + + + + Called when the map was fully loaded + + The map that has finished loading + + + + Called after a map has been abandoned or otherwise made inaccessible. + Works on player bases, encounter maps, destroyed faction bases, etc. + + The map that has been discarded + + + + Called after each scene change + + The scene that has been loaded + + + + Called after settings menu changes have been confirmed. + This is called for all mods, regardless if their own settings have been modified, or not. + + + + + Called after StaticInitialize and when defs have been reloaded. This is a good place to inject defs. + Get your settings handles here, so that the labels will properly update on language change. + If the mod is disabled after being loaded, this method will STILL execute. Use ModIsActive to check. + + + There is no scenario in which defs are reloaded without the game restarting, save for a mod manually initiating a reload. + When def reloading is not an issue, anything done by this method can be safely done in StaticInitialize. + + + + + Called before the game process shuts down. + "Quit to OS", clicking the "X" button on the window, and pressing Alt+F4 all execute this event. + There are still ways to forcibly terminate the game process, so this callback is not 100% reliable. + + + Modified s are automatically saved after this call. + + + + + Describes a single update news item. + Recommended to be placed in the /News folder in the root directory of the mod. + Can be loaded from the /Defs folder, but any placed + in the /News folder will unload all s loaded from /Defs. + + + + + An optional unique identifier to reference the mod that adds this news item. + If not set, the PackageId of the mod will be used. + Must start with a letter and contain any of [A-z, 0-9, -, _, :] + + + Used to preserve compatibility with pre-RW1.1 HugsLib news data, such as already displayed news items and ignored news providers. + Previously used to reference a BodBase.ModIdentifier which had to be loaded for the defining news def to be displayed. + + + + + Displayed in the title of the news item + + + + + Optional complete replacement for the news item title + + + + + The version number associated with the news item. Format: major.minor.patch + Used to sort news items and determine which items have not been displayed yet. + + + For example, after an item with version 3.2.1 has been displayed, adding an item with version 3.2.0 will not cause the + New Mod Features dialog to automatically open. However, both items will still appear the next time the dialog is opened. + The version of the mod adding the news item is no longer required to be equal or higher for a news item to be displayed. + + + + + The text of the news item. Can contain text and images, supports Unity html markup (only recommended for highlighting). + The text can contain the following formatting markers: + | -> (pipe) splits the content into segments. A segment can be a paragraph or image sequence + img:name1,name2 -> Displays a horizontal image sequence. Image names are file names without the extension. + caption:text -> Attaches a text paragraph on the right side of the preceding image + Everything else is treated as plain text and creates a paragraph. + + Paragraph1|Paragraph2|img:singleImage|caption:caption\ntext|img:sequence1,sequence2|More text + + + + When set to true (true by default), leading and trailing whitespace characters (spaces, tabs, newlines) + are removed from content captions and paragraphs. + This makes it easier lay out your content and not have to cram everything into one line. + + + + + Optional link to a forum post/info page for this update, or the whole mod. Displayed in the news item title. + + + + + Specifies which players of the mod the news item should be only shown to- new players, returning players, or both. + Defaults to . + + + + + Returns the Id of the owning mod. + is used if defined, and ModContentPack.PackageId otherwise. + + + + + Provides a convenient way to read, compare and print out the assembly version and file version of assemblies. + + + + + Tries to read the file assembly version in addition to the already known assembly version. + + The assembly to read + The full path to the assembly file, if is not set + An with only AssemblyVersion set if an exception was encountered + + + + Reads assembly version information for a mod assembly. + Mod assemblies require special treatment, since they are loaded from byte arrays and their is null. + + The assembly to read + The content pack the assembly was loaded from + See + + + + A way to schedule single-use callbacks for an upcoming event. + Useful to break the stack and ensure code is run in the main thread. + Access via HugsLibController.Instance.DoLater + + + + + Schedule a callback to be executed at the start of the next tick + + + + + Schedule a callback to be executed at the start of the next frame + + + + + Schedule a callback to be executed at the start of the next OnGUI + + + + + Schedule a callback to be executed the next time a map has finished loading + + The callback receives the map that has finished loading + + + + A performance-friendly way to execute code at arbitrary tick intervals. + Optimized for one-off timed callbacks with variable callback delay. + Use DistributedTickScheduler instead if you have many recipients with recurring callbacks and constant time. + Callbacks are called at tick time, which means a game must be loaded and running for them to be processed. + + + + + Registers a delegate to be called in a given number of ticks. + + The delegate to be called + The delay in ticks before the delegate is called + Optional owner of the delegate. Callback will not fire if the Thing is not spawned at call time. + If true, the callback will be rescheduled after each call until manually unscheduled + + + + Manually remove a callback to abort a delay or clear a recurring callback. + Silently fails if the callback is not found. + + The scheduled callback + + + + Only for debug purposes + + + + + A compact confirm dialog with Esc and Enter key support. + + + + + A compact message dialog with a title and a custom close button label. + + + + A title to display in the dialog + A message to display in the dialog + A custom label to the close button. Optional- when null, the default label will be used instead. + A callback to call when the dialog is closed + + + + A ticking scheduler for things that require a tick only every so often. + Distributes tick calls uniformly over multiple frames to reduce the workload. + Optimized for many tick recipients with the same tick interval. + + + + + Registers a delegate to be called every tickInterval ticks. + + The delegate that will be called + The interval between the calls (for example 30 to have the delegate be called 2 times a second) + The Thing the delegate is attached to. The callback will be automatically unregistered if the owner is found to be despawned at call time. + + + + Manually removes a delegate to prevent further calls. + + Throws if the provided owner is not registered. Use IsRegistered() to check. + The Thing the delegate was registered with + + + + Returns true if the passed Thing is registered as the owner of a delegate. + + + + + + + Returns all registered tick recipients + + + + + + Returns the number of calls issued across all intervals during the last tick + + + + + Returns the number of active tickers (intervals) + + + + + Tools for working with the Harmony library. + + + + + Produces a human-readable list of all methods patched by all Harmony instances and their respective patches. + + + + + Produces a human-readable list of all methods patched by a single Harmony instance and their respective patches. + + A Harmony instance that can be queried for patch information. + + + + Produces a human-readable list of Harmony patches on a given set of methods. + + + + + Produces a human-readable list of all Harmony versions present and their respective owners. + + A Harmony instance that can be queried for version information. + + + + + Logs an error if any issues with Harmony patches are detected + + + + + A catch-all place for extension methods and other useful stuff + + + + + Returns true if the left or right Shift keys are currently pressed. + + + + + Returns true if the left or right Alt keys are currently pressed. + + + + + Returns true if the left or right Control keys are currently pressed. + Mac command keys are supported, as well. + + + + + Returns an enumerable as a comma-separated string. + + A list of elements to string together + + + + Returns an enumerable as a string, joined by a separator string. By default null values appear as an empty string. + + A list of elements to string together + A string to inset between elements + If true, null elements will appear as "[null]" + + + + Returns a version as major.minor.patch formatted string. + + + + + Checks if a Thing has a designation of a given def. + + + The designation def to check for + + + + Adds or removes a designation of a given def on a Thing. Fails silently if designation is already in the desired state. + + The thing to designate + The DesignationDef to apply or remove + True to add the designation, false to remove + + + + Checks if a cell has a designation of a given def + + The map position to check + The DesignationDef to detect + The map to look on. When null, defaults to VisibleMap. + + + + Adds or removes a designation of a given def on a cell. Fails silently if designation is already in the desired state. + + The position to designate + The DesignationDef to apply or remove + True to add the designation, false to remove + The map to operate on. When null, defaults to VisibleMap. + + + + Returns true, if a MethodInfo matches the provided signature. + + Note: instance methods always take their parent type as the first parameter. + The method to check + Expected return type of the checked method + Expected parameter types of the checked method + + + + Returns an attribute from a member, if it exists. + Mods could include attributes from libraries that are not loaded, which would throw an exception, so error checking is included. + + The type of the attribute to fetch + The member to fetch the attribute from + + + + Enumerates all loaded assemblies, including stock and enabled mods. + + + + + Returns true if the mod with a matching name is currently loaded in the mod configuration. + + The ModMetaData.Name to match + + + + Copies a string to the system copy buffer and displays a confirmation message. + + + + + Expands a shorthand unix user directory path with its full system path. + + + + + Adds double quotes to the start and end of a string. + + + + + Attempts to return the path of the log file Unity is writing to. + + + + + + Sends a constructed UnityWebRequest, waits for the result, and returns the data via callbacks. + + Use UnityWebRequest or WWW to construct a request. Do not call Send(). + Called with the response body if server replied with status 200. + Called with the error message in case of a network error or if server replied with status other than 200. + The expected status code in the response for the request to be considered successful + How long to wait before aborting the request + + + + Tries to find the file handle for a given mod assembly name. + + This is a replacement for mod assemblies are loaded from byte arrays. + The of the assembly + The content pack the assembly was presumably loaded from + Returns null if the file is not found + + + + Same as but suppresses all exceptions. + + + + + Opens the Options dialog on the Mod Settings page. + + + + + Adds a hash to a manually instantiated def to avoid def collisions. + + + + + Give a short hash to a def created at runtime. + Short hashes are used for proper saving of defs in compressed maps within a save file. + + + The type of defs your def will be saved with. For example, + use typeof(ThingDef) if your def extends ThingDef. + + + + Injects a map component into the current map if it does not already exist. + Required for new MapComponents that were not active at map creation. + The injection is performed at ExecuteWhenFinished to allow calling this method in MapComponent constructors. + + The MapComponent that is expected to be present is the map's component list + + + + Gets the map component of the given type from a map. + Will throw an exception if a component of the requested type is not found. + + The type of your MapComponent + The map to get the component from + + + + A logger that prefixes all messages with the identifier of the issuing mod. + + + + + Writes a message to the log, prefixing it with the issuing mod identifier. + + The message to write + Optional substitution values for the message + + + + Same as Message(), but the console will display the message as a warning. + + + + + Same as Message(), but the console will display the message as an error. + This will open the Log window in in Dev mode. + + + + + Writes a message only if Dev mode is enabled. + Message is written using Tracer.Trace with the addition of the ModIdentifier as the first value. + + The strings to display + + + + Same as Trace(), but formats the message and replaces substitution variables. + + + + + Writes an error to the log to report an exception. + The message will contain the name of the method that caused the exception if a location is not provided. + + The exception that occurred + Optional identifier of the mod that caused the exception + True, if the exception should only be reported once for that specific location. Useful for errors that will trigger each frame or tick. + Optional name of the location where the exception occurred. Will display as "exception during (location)" + + + + A tool to identify the platform the game is running on. + + + + + Utility methods for displaying debug messages during development. + + + + + Writes comma-separated log messages if the game is in Dev mode. + Any non-strings will be converted to strings, and null values will appear explicitly. + + Messages to output + + + + Similar to Trace, but feeds the messages through String.Format first. + + The string to interpolate + Interpolation arguments + + + + Base type for utility WorldObjects repurposed to store data. See UtilityWorldObjectManager for more info. + + + + + Handles utility WorldObjects of custom types. + Utility WorldObjects are a map-independent storage method for custom data. + All UWOs share the same def and aren't visible on the world, but are saved and loaded with it. + + + + + Returns an existing UWO or creates a new one, adding it to the world. + + Your custom type that extends UtilityWorldObject + + + diff --git a/CRIALactation/1.4/Assemblies/ISharpZipLib.dll b/CRIALactation/1.4/Assemblies/ISharpZipLib.dll new file mode 100644 index 0000000..bb15d24 Binary files /dev/null and b/CRIALactation/1.4/Assemblies/ISharpZipLib.dll differ diff --git a/CRIALactation/1.4/Assemblies/Milk.dll b/CRIALactation/1.4/Assemblies/Milk.dll new file mode 100644 index 0000000..0e58733 Binary files /dev/null and b/CRIALactation/1.4/Assemblies/Milk.dll differ diff --git a/CRIALactation/1.4/Assemblies/NAudio.dll b/CRIALactation/1.4/Assemblies/NAudio.dll new file mode 100644 index 0000000..decb8dd Binary files /dev/null and b/CRIALactation/1.4/Assemblies/NAudio.dll differ diff --git a/CRIALactation/1.4/Assemblies/NVorbis.dll b/CRIALactation/1.4/Assemblies/NVorbis.dll new file mode 100644 index 0000000..89d7214 Binary files /dev/null and b/CRIALactation/1.4/Assemblies/NVorbis.dll differ diff --git a/CRIALactation/1.4/Assemblies/RJW.dll b/CRIALactation/1.4/Assemblies/RJW.dll new file mode 100644 index 0000000..cd73522 Binary files /dev/null and b/CRIALactation/1.4/Assemblies/RJW.dll differ diff --git a/CRIALactation/1.4/Assemblies/Unity.TextMeshPro.dll b/CRIALactation/1.4/Assemblies/Unity.TextMeshPro.dll new file mode 100644 index 0000000..ec29a4f Binary files /dev/null and b/CRIALactation/1.4/Assemblies/Unity.TextMeshPro.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.AIModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.AIModule.dll new file mode 100644 index 0000000..78e7704 Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.AIModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.ARModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.ARModule.dll new file mode 100644 index 0000000..faa2f92 Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.ARModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.AccessibilityModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.AccessibilityModule.dll new file mode 100644 index 0000000..5229d35 Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.AccessibilityModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.AndroidJNIModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.AndroidJNIModule.dll new file mode 100644 index 0000000..52d1ec4 Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.AndroidJNIModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.AnimationModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.AnimationModule.dll new file mode 100644 index 0000000..6243b6b Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.AnimationModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.AssetBundleModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.AssetBundleModule.dll new file mode 100644 index 0000000..4762681 Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.AssetBundleModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.AudioModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.AudioModule.dll new file mode 100644 index 0000000..04a092a Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.AudioModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.ClothModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.ClothModule.dll new file mode 100644 index 0000000..e9a819d Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.ClothModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.ClusterInputModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.ClusterInputModule.dll new file mode 100644 index 0000000..6324fbb Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.ClusterInputModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.ClusterRendererModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.ClusterRendererModule.dll new file mode 100644 index 0000000..26ef8fa Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.ClusterRendererModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.CoreModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.CoreModule.dll new file mode 100644 index 0000000..83b2b0a Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.CoreModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.CrashReportingModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.CrashReportingModule.dll new file mode 100644 index 0000000..7d391bd Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.CrashReportingModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.DSPGraphModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.DSPGraphModule.dll new file mode 100644 index 0000000..eba8cc1 Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.DSPGraphModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.DirectorModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.DirectorModule.dll new file mode 100644 index 0000000..5976cc5 Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.DirectorModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.GameCenterModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.GameCenterModule.dll new file mode 100644 index 0000000..4797dbe Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.GameCenterModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.GridModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.GridModule.dll new file mode 100644 index 0000000..61c1ec4 Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.GridModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.IMGUIModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.IMGUIModule.dll new file mode 100644 index 0000000..b557b58 Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.IMGUIModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.ImageConversionModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.ImageConversionModule.dll new file mode 100644 index 0000000..79aa449 Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.ImageConversionModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.InputLegacyModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.InputLegacyModule.dll new file mode 100644 index 0000000..1067ff9 Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.InputLegacyModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.InputModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.InputModule.dll new file mode 100644 index 0000000..3be4fb9 Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.InputModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.JSONSerializeModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.JSONSerializeModule.dll new file mode 100644 index 0000000..cd1981f Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.JSONSerializeModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.LocalizationModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.LocalizationModule.dll new file mode 100644 index 0000000..292f854 Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.LocalizationModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.ParticleSystemModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.ParticleSystemModule.dll new file mode 100644 index 0000000..c570bbe Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.ParticleSystemModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.PerformanceReportingModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.PerformanceReportingModule.dll new file mode 100644 index 0000000..faf6411 Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.PerformanceReportingModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.Physics2DModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.Physics2DModule.dll new file mode 100644 index 0000000..65dba8a Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.Physics2DModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.PhysicsModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.PhysicsModule.dll new file mode 100644 index 0000000..4a7a9a6 Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.PhysicsModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.ScreenCaptureModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.ScreenCaptureModule.dll new file mode 100644 index 0000000..4ec8198 Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.ScreenCaptureModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.SharedInternalsModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.SharedInternalsModule.dll new file mode 100644 index 0000000..8a9c9eb Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.SharedInternalsModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.SpriteMaskModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.SpriteMaskModule.dll new file mode 100644 index 0000000..3de5b54 Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.SpriteMaskModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.SpriteShapeModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.SpriteShapeModule.dll new file mode 100644 index 0000000..b59a5b8 Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.SpriteShapeModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.StreamingModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.StreamingModule.dll new file mode 100644 index 0000000..69068e5 Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.StreamingModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.SubsystemsModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.SubsystemsModule.dll new file mode 100644 index 0000000..b5b7429 Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.SubsystemsModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.TerrainModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.TerrainModule.dll new file mode 100644 index 0000000..18b193e Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.TerrainModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.TerrainPhysicsModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.TerrainPhysicsModule.dll new file mode 100644 index 0000000..48119b4 Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.TerrainPhysicsModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.TextCoreModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.TextCoreModule.dll new file mode 100644 index 0000000..e13a54d Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.TextCoreModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.TextRenderingModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.TextRenderingModule.dll new file mode 100644 index 0000000..447239e Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.TextRenderingModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.TilemapModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.TilemapModule.dll new file mode 100644 index 0000000..6c43665 Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.TilemapModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.UI.dll b/CRIALactation/1.4/Assemblies/UnityEngine.UI.dll new file mode 100644 index 0000000..ea17de1 Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.UI.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.UIElementsModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.UIElementsModule.dll new file mode 100644 index 0000000..8dc2716 Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.UIElementsModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.UIModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.UIModule.dll new file mode 100644 index 0000000..e082dda Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.UIModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.UNETModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.UNETModule.dll new file mode 100644 index 0000000..0234fad Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.UNETModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.UnityAnalyticsModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.UnityAnalyticsModule.dll new file mode 100644 index 0000000..e3c39e8 Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.UnityAnalyticsModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.UnityConnectModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.UnityConnectModule.dll new file mode 100644 index 0000000..7ec2470 Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.UnityConnectModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.UnityWebRequestAssetBundleModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.UnityWebRequestAssetBundleModule.dll new file mode 100644 index 0000000..0024d85 Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.UnityWebRequestAssetBundleModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.UnityWebRequestAudioModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.UnityWebRequestAudioModule.dll new file mode 100644 index 0000000..d4f9220 Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.UnityWebRequestAudioModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.UnityWebRequestModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.UnityWebRequestModule.dll new file mode 100644 index 0000000..b99842a Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.UnityWebRequestModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.UnityWebRequestTextureModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.UnityWebRequestTextureModule.dll new file mode 100644 index 0000000..d8b643a Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.UnityWebRequestTextureModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.UnityWebRequestWWWModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.UnityWebRequestWWWModule.dll new file mode 100644 index 0000000..b8b8314 Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.UnityWebRequestWWWModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.VFXModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.VFXModule.dll new file mode 100644 index 0000000..0895120 Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.VFXModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.VRModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.VRModule.dll new file mode 100644 index 0000000..ea9d6fe Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.VRModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.VehiclesModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.VehiclesModule.dll new file mode 100644 index 0000000..f7c1085 Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.VehiclesModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.VideoModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.VideoModule.dll new file mode 100644 index 0000000..92c9898 Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.VideoModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.WindModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.WindModule.dll new file mode 100644 index 0000000..8ac2232 Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.WindModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.XRModule.dll b/CRIALactation/1.4/Assemblies/UnityEngine.XRModule.dll new file mode 100644 index 0000000..a58bf6a Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.XRModule.dll differ diff --git a/CRIALactation/1.4/Assemblies/UnityEngine.dll b/CRIALactation/1.4/Assemblies/UnityEngine.dll new file mode 100644 index 0000000..d45693c Binary files /dev/null and b/CRIALactation/1.4/Assemblies/UnityEngine.dll differ diff --git a/CRIALactation/1.4/Assemblies/com.rlabrecque.steamworks.net.dll b/CRIALactation/1.4/Assemblies/com.rlabrecque.steamworks.net.dll new file mode 100644 index 0000000..57edb49 Binary files /dev/null and b/CRIALactation/1.4/Assemblies/com.rlabrecque.steamworks.net.dll differ diff --git a/CRIALactation/CRIALactation.csproj b/CRIALactation/CRIALactation.csproj index f52b555..9c93a0f 100644 --- a/CRIALactation/CRIALactation.csproj +++ b/CRIALactation/CRIALactation.csproj @@ -9,15 +9,16 @@ Properties CRIALactation CRIALactation - v4.7.2 + v4.8 512 true + false none false - 1.3\Assemblies\ + 1.4\Assemblies\ DEBUG;TRACE prompt 4 @@ -32,24 +33,19 @@ - ..\..\..\..\..\workshop\content\294100\2009463077\Current\Assemblies\0Harmony.dll - False + ..\..\..\..\..\workshop\content\294100\839005762\1.4\Assemblies\0Harmony.dll ..\..\..\RimWorldWin64_Data\Managed\Assembly-CSharp.dll - False - ..\..\..\..\..\workshop\content\294100\818773962\v1.3\Assemblies\HugsLib.dll - False + ..\..\..\..\..\workshop\content\294100\818773962\v1.4\Assemblies\HugsLib.dll ..\..\rjw-mc\1.3\Assemblies\Milk.dll - False - ..\..\rjw\1.3\Assemblies\RJW.dll - False + ..\..\rjw\1.4\Assemblies\RJW.dll @@ -61,17 +57,17 @@ ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.dll - False ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.CoreModule.dll - False + + diff --git a/CRIALactation/Defs/AbilityDefs/Abilities_Hucow.xml b/CRIALactation/Defs/AbilityDefs/Abilities_Hucow.xml index d9e8216..41631d4 100644 --- a/CRIALactation/Defs/AbilityDefs/Abilities_Hucow.xml +++ b/CRIALactation/Defs/AbilityDefs/Abilities_Hucow.xml @@ -81,10 +81,10 @@
  • CompAbilityEffect_GiveHediff - Hucow + InducingLactation False
  • -
  • +
  • \ No newline at end of file diff --git a/CRIALactation/Defs/PreceptDefs/Precepts_Lactating_Role.xml b/CRIALactation/Defs/PreceptDefs/Precepts_Lactating_Role.xml index 366177c..c69663b 100644 --- a/CRIALactation/Defs/PreceptDefs/Precepts_Lactating_Role.xml +++ b/CRIALactation/Defs/PreceptDefs/Precepts_Lactating_Role.xml @@ -37,7 +37,7 @@ UI/Issues/Lactating - + IdeoRole_HucowHandler HucowHandling @@ -147,6 +147,7 @@
  • ConvertToHucow
  • +
  • BeginInducingLactation
  • diff --git a/CRIALactation/Source/CompProperties/CompAbilityEffects/CompProperties_AbilityBeginInducingLactation.cs b/CRIALactation/Source/CompProperties/CompAbilityEffects/CompProperties_AbilityBeginInducingLactation.cs new file mode 100644 index 0000000..7ba6f26 --- /dev/null +++ b/CRIALactation/Source/CompProperties/CompAbilityEffects/CompProperties_AbilityBeginInducingLactation.cs @@ -0,0 +1,23 @@ +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Verse; +using RimWorld; +using rjw; +using Milk; +using UnityEngine; + + +namespace CRIALactation +{ + public class CompProperties_AbilityBeginInducingLactation : CompProperties_AbilityEffect + { + + public CompProperties_AbilityBeginInducingLactation() + { + this.compClass = typeof(CompAbilityEffect_BeginInducingLactation); + } + + } +} diff --git a/CRIALactation/Source/Comps/CompAbilityEffects/CompAbilityEffect_BeginInducingLactation.cs b/CRIALactation/Source/Comps/CompAbilityEffects/CompAbilityEffect_BeginInducingLactation.cs index 3c530e5..17bded8 100644 --- a/CRIALactation/Source/Comps/CompAbilityEffects/CompAbilityEffect_BeginInducingLactation.cs +++ b/CRIALactation/Source/Comps/CompAbilityEffects/CompAbilityEffect_BeginInducingLactation.cs @@ -1,5 +1,6 @@ using RimWorld; using RimWorld.Planet; +using rjw; using System; using System.Collections.Generic; using System.Linq; @@ -16,8 +17,10 @@ namespace CRIALactation { Pawn pawn = target.Pawn; + if (pawn == null) return false; - if (!pawn.IsColonistPlayerControlled || !pawn.IsSlaveOfColony || !pawn.IsPrisonerOfColony) return false; + if (!(pawn.IsColonistPlayerControlled || pawn.IsSlaveOfColony || pawn.IsPrisonerOfColony)) return false; + if (!Genital_Helper.has_breasts(pawn) || Genital_Helper.has_male_breasts(pawn)) return false; if (LactationUtility.IsLactating(pawn)) return false; return true; diff --git a/CRIALactation/Source/Comps/CompAbilityEffects/CompAbilityEffect_ConvertHucow.cs b/CRIALactation/Source/Comps/CompAbilityEffects/CompAbilityEffect_ConvertHucow.cs index 9d6d4cc..65b38f7 100644 --- a/CRIALactation/Source/Comps/CompAbilityEffects/CompAbilityEffect_ConvertHucow.cs +++ b/CRIALactation/Source/Comps/CompAbilityEffects/CompAbilityEffect_ConvertHucow.cs @@ -16,9 +16,9 @@ namespace CRIALactation public override bool Valid(LocalTargetInfo target, bool throwMessages = false) { Pawn pawn = target.Pawn; - return pawn != null && AbilityUtility.ValidateMustBeHuman(pawn, throwMessages) && - AbilityUtility.ValidateNoMentalState(pawn, throwMessages) && - AbilityUtility.ValidateSameIdeo(this.parent.pawn, pawn, throwMessages) && + return pawn != null && AbilityUtility.ValidateMustBeHuman(pawn, throwMessages, this.parent) && + AbilityUtility.ValidateNoMentalState(pawn, throwMessages, this.parent) && + AbilityUtility.ValidateSameIdeo(this.parent.pawn, pawn, throwMessages, this.parent) && LactationUtility.IsLactating(pawn) && !LactationUtility.IsHucow(pawn); diff --git a/CRIALactation/Source/Comps/CompLactation.cs b/CRIALactation/Source/Comps/CompLactation.cs index 3345473..56706c5 100644 --- a/CRIALactation/Source/Comps/CompLactation.cs +++ b/CRIALactation/Source/Comps/CompLactation.cs @@ -19,6 +19,20 @@ namespace CRIALactation Scribe_Values.Look(ref this.lastHumanLactationIngestedTick, "lastHumanLactationIngestedTick", 0); } + + public override string CompInspectStringExtra() + { + if((parent as Pawn).health?.hediffSet?.GetFirstHediffOfDef(HediffDefOf_Milk.InducingLactation) != null + && (parent as Pawn).health.hediffSet.GetFirstHediffOfDef(HediffDefOf_Milk.InducingLactation).TryGetComp().canMassage()) + { + return "Ready to stimulate breasts for lactation."; + } + + else + { + return ""; + } + } } diff --git a/CRIALactation/Source/Precepts/PreceptComp_Lactation.cs b/CRIALactation/Source/Precepts/PreceptComp_Lactation.cs index 57e788c..def819c 100644 --- a/CRIALactation/Source/Precepts/PreceptComp_Lactation.cs +++ b/CRIALactation/Source/Precepts/PreceptComp_Lactation.cs @@ -13,9 +13,11 @@ namespace CRIALactation public class PreceptComp_Lactation : PreceptComp { - public override void Notify_MemberGenerated(Pawn pawn, Precept precept) + public override void Notify_MemberGenerated(Pawn pawn, Precept precept, bool newborn) { + if (newborn) return; + if((precept.def == PreceptDefOf_Lactation.Lactating_Essential || precept.def == PreceptDefOf_Lactation.Lactating_MandatoryHucow) && LactationUtility.HasMilkableBreasts(pawn)) diff --git a/CRIAOrgy/Assemblies/CRIAOrgy.dll b/CRIAOrgy/1.3/Assemblies/CRIAOrgy.dll similarity index 100% rename from CRIAOrgy/Assemblies/CRIAOrgy.dll rename to CRIAOrgy/1.3/Assemblies/CRIAOrgy.dll diff --git a/CRIAOrgy/1.4/Assemblies/0Harmony.dll b/CRIAOrgy/1.4/Assemblies/0Harmony.dll new file mode 100644 index 0000000..e182535 Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/0Harmony.dll differ diff --git a/CRIAOrgy/1.4/Assemblies/0Harmony.xml b/CRIAOrgy/1.4/Assemblies/0Harmony.xml new file mode 100644 index 0000000..f1b9b4c --- /dev/null +++ b/CRIAOrgy/1.4/Assemblies/0Harmony.xml @@ -0,0 +1,3693 @@ + + + + 0Harmony + + + + A factory to create delegate types + + + Default constructor + + + Creates a delegate type for a method + The method + The new delegate type + + + + A getter delegate type + Type that getter gets field/property value from + Type of the value that getter gets + The instance get getter uses + An delegate + + + + A setter delegate type + Type that setter sets field/property value for + Type of the value that setter sets + The instance the setter uses + The value the setter uses + An delegate + + + + A constructor delegate type + Type that constructor creates + An delegate + + + + A helper class for fast access to getters and setters + + + Creates an instantiation delegate + Type that constructor creates + The new instantiation delegate + + + + Creates an getter delegate for a property + Type that getter reads property from + Type of the property that gets accessed + The property + The new getter delegate + + + + Creates an getter delegate for a field + Type that getter reads field from + Type of the field that gets accessed + The field + The new getter delegate + + + + Creates an getter delegate for a field (with a list of possible field names) + Type that getter reads field/property from + Type of the field/property that gets accessed + A list of possible field names + The new getter delegate + + + + Creates an setter delegate + Type that setter assigns property value to + Type of the property that gets assigned + The property + The new setter delegate + + + + Creates an setter delegate for a field + Type that setter assigns field value to + Type of the field that gets assigned + The field + The new getter delegate + + + + A delegate to invoke a method + The instance + The method parameters + The method result + + + A helper class to invoke method with delegates + + + Creates a fast invocation handler from a method + The method to invoke + Controls if boxed value object is accessed/updated directly + The + + + The directBoxValueAccess option controls how value types passed by reference (e.g. ref int, out my_struct) are handled in the arguments array + passed to the fast invocation handler. + Since the arguments array is an object array, any value types contained within it are actually references to a boxed value object. + Like any other object, there can be other references to such boxed value objects, other than the reference within the arguments array. + For example, + + var val = 5; + var box = (object)val; + var arr = new object[] { box }; + handler(arr); // for a method with parameter signature: ref/out/in int + + + + + If directBoxValueAccess is true, the boxed value object is accessed (and potentially updated) directly when the handler is called, + such that all references to the boxed object reflect the potentially updated value. + In the above example, if the method associated with the handler updates the passed (boxed) value to 10, both box and arr[0] + now reflect the value 10. Note that the original val is not updated, since boxing always copies the value into the new boxed value object. + + + If directBoxValueAccess is false (default), the boxed value object in the arguments array is replaced with a "reboxed" value object, + such that potential updates to the value are reflected only in the arguments array. + In the above example, if the method associated with the handler updates the passed (boxed) value to 10, only arr[0] now reflects the value 10. + + + + + A low level memory helper + + + + Mark method for no inlining (currently only works on Mono) + The method/constructor to change + + + + Detours a method + The original method/constructor + The replacement method/constructor + An error string + + + + Writes a jump to memory + The memory address + Jump destination + An error string + + + + Gets the start of a method in memory + The method/constructor + [out] Details of the exception + The method start address + + + + special parameter names that can be used in prefix and postfix methods + + + Patch function helpers + + + Sorts patch methods by their priority rules + The original method + Patches to sort + Use debug mode + The sorted patch methods + + + + Creates new replacement method with the latest patches and detours the original method + The original method + Information describing the patches + The newly created replacement method + + + + Creates a patch sorter + Array of patches that will be sorted + Use debugging + + + Sorts internal PatchSortingWrapper collection and caches the results. + After first run the result is provided from the cache. + The original method + The sorted patch methods + + + Checks if the sorter was created with the same patch list and as a result can be reused to + get the sorted order of the patches. + List of patches to check against + true if equal + + + Removes one unresolved dependency from the least important patch. + + + Outputs all unblocked patches from the waiting list to results list + + + Adds patch to both results list and handled patches set + Patch to add + + + Wrapper used over the Patch object to allow faster dependency access and + dependency removal in case of cyclic dependencies + + + Create patch wrapper object used for sorting + Patch to wrap + + + Determines how patches sort + The other patch + integer to define sort order (-1, 0, 1) + + + Determines whether patches are equal + The other patch + true if equal + + + Hash function + A hash code + + + Bidirectionally registers Patches as after dependencies + List of dependencies to register + + + Bidirectionally registers Patches as before dependencies + List of dependencies to register + + + Bidirectionally removes Patch from after dependencies + Patch to remove + + + Bidirectionally removes Patch from before dependencies + Patch to remove + + + Specifies the type of method + + + + This is a normal method + + + This is a getter + + + This is a setter + + + This is a constructor + + + This is a static constructor + + + This targets the MoveNext method of the enumerator result + + + Specifies the type of argument + + + + This is a normal argument + + + This is a reference argument (ref) + + + This is an out argument (out) + + + This is a pointer argument (&) + + + Specifies the type of patch + + + + Any patch + + + A prefix patch + + + A postfix patch + + + A transpiler + + + A finalizer + + + A reverse patch + + + Specifies the type of reverse patch + + + + Use the unmodified original method (directly from IL) + + + Use the original as it is right now including previous patches but excluding future ones + + + Specifies the type of method call dispatching mechanics + + + + Call the method using dynamic dispatching if method is virtual (including overriden) + + + This is the built-in form of late binding (a.k.a. dynamic binding) and is the default dispatching mechanic in C#. + This directly corresponds with the instruction. + + + For virtual (including overriden) methods, the instance type's most-derived/overriden implementation of the method is called. + For non-virtual (including static) methods, same behavior as : the exact specified method implementation is called. + + + Note: This is not a fully dynamic dispatch, since non-virtual (including static) methods are still called non-virtually. + A fully dynamic dispatch in C# involves using + the dynamic type + (actually a fully dynamic binding, since even the name and overload resolution happens at runtime), which does not support. + + + + + Call the method using static dispatching, regardless of whether method is virtual (including overriden) or non-virtual (including static) + + + a.k.a. non-virtual dispatching, early binding, or static binding. + This directly corresponds with the instruction. + + + For both virtual (including overriden) and non-virtual (including static) methods, the exact specified method implementation is called, without virtual/override mechanics. + + + + + The base class for all Harmony annotations (not meant to be used directly) + + + + The common information for all attributes + + + Annotation to define your Harmony patch methods + + + + An empty annotation can be used together with TargetMethod(s) + + + + An annotation that specifies a class to patch + The declaring class/type + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The argument types of the method or constructor to patch + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The name of the method, property or constructor to patch + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The name of the method, property or constructor to patch + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The name of the method, property or constructor to patch + An array of argument types to target overloads + Array of + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The + An array of argument types to target overloads + Array of + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The name of the method, property or constructor to patch + The + + + + An annotation that specifies a method, property or constructor to patch + The name of the method, property or constructor to patch + + + + An annotation that specifies a method, property or constructor to patch + The name of the method, property or constructor to patch + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + The name of the method, property or constructor to patch + An array of argument types to target overloads + An array of + + + + An annotation that specifies a method, property or constructor to patch + The name of the method, property or constructor to patch + The + + + + An annotation that specifies a method, property or constructor to patch + The + + + + An annotation that specifies a method, property or constructor to patch + The + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + The + An array of argument types to target overloads + An array of + + + + An annotation that specifies a method, property or constructor to patch + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + An array of argument types to target overloads + An array of + + + + An annotation that specifies a method, property or constructor to patch + The full name of the declaring class/type + The name of the method, property or constructor to patch + The + + + + Annotation to define the original method for delegate injection + + + + An annotation that specifies a class to patch + The declaring class/type + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The argument types of the method or constructor to patch + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The name of the method, property or constructor to patch + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The name of the method, property or constructor to patch + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The name of the method, property or constructor to patch + An array of argument types to target overloads + Array of + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The + An array of argument types to target overloads + Array of + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The name of the method, property or constructor to patch + The + + + + An annotation that specifies a method, property or constructor to patch + The name of the method, property or constructor to patch + + + + An annotation that specifies a method, property or constructor to patch + The name of the method, property or constructor to patch + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + The name of the method, property or constructor to patch + An array of argument types to target overloads + An array of + + + + An annotation that specifies a method, property or constructor to patch + The name of the method, property or constructor to patch + The + + + + An annotation that specifies call dispatching mechanics for the delegate + The + + + + An annotation that specifies a method, property or constructor to patch + The + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + The + An array of argument types to target overloads + An array of + + + + An annotation that specifies a method, property or constructor to patch + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + An array of argument types to target overloads + An array of + + + + Annotation to define your standin methods for reverse patching + + + + An annotation that specifies the type of reverse patching + The of the reverse patch + + + + A Harmony annotation to define that all methods in a class are to be patched + + + + A Harmony annotation + + + + A Harmony annotation to define patch priority + The priority + + + + A Harmony annotation + + + + A Harmony annotation to define that a patch comes before another patch + The array of harmony IDs of the other patches + + + + A Harmony annotation + + + A Harmony annotation to define that a patch comes after another patch + The array of harmony IDs of the other patches + + + + A Harmony annotation + + + A Harmony annotation to debug a patch (output uses to log to your Desktop) + + + + Specifies the Prepare function in a patch class + + + + Specifies the Cleanup function in a patch class + + + + Specifies the TargetMethod function in a patch class + + + + Specifies the TargetMethods function in a patch class + + + + Specifies the Prefix function in a patch class + + + + Specifies the Postfix function in a patch class + + + + Specifies the Transpiler function in a patch class + + + + Specifies the Finalizer function in a patch class + + + + A Harmony annotation + + + + The name of the original argument + + + + The index of the original argument + + + + The new name of the original argument + + + + An annotation to declare injected arguments by name + + + + An annotation to declare injected arguments by index + Zero-based index + + + + An annotation to declare injected arguments by renaming them + Name of the original argument + New name + + + + An annotation to declare injected arguments by index and renaming them + Zero-based index + New name + + + + An abstract wrapper around OpCode and their operands. Used by transpilers + + + + The opcode + + + + The operand + + + + All labels defined on this instruction + + + + All exception block boundaries defined on this instruction + + + + Creates a new CodeInstruction with a given opcode and optional operand + The opcode + The operand + + + + Create a full copy (including labels and exception blocks) of a CodeInstruction + The to copy + + + + Clones a CodeInstruction and resets its labels and exception blocks + A lightweight copy of this code instruction + + + + Clones a CodeInstruction, resets labels and exception blocks and sets its opcode + The opcode + A copy of this CodeInstruction with a new opcode + + + + Clones a CodeInstruction, resets labels and exception blocks and sets its operand + The operand + A copy of this CodeInstruction with a new operand + + + + Creates a CodeInstruction calling a method (CALL) + The class/type where the method is declared + The name of the method (case sensitive) + Optional parameters to target a specific overload of the method + Optional list of types that define the generic version of the method + A code instruction that calls the method matching the arguments + + + + Creates a CodeInstruction calling a method (CALL) + The target method in the form TypeFullName:MethodName, where the type name matches a form recognized by Type.GetType like Some.Namespace.Type. + Optional parameters to target a specific overload of the method + Optional list of types that define the generic version of the method + A code instruction that calls the method matching the arguments + + + + Creates a CodeInstruction calling a method (CALL) + The lambda expression using the method + + + + + Creates a CodeInstruction calling a method (CALL) + The lambda expression using the method + + + + + Creates a CodeInstruction calling a method (CALL) + The lambda expression using the method + + + + + Creates a CodeInstruction calling a method (CALL) + The lambda expression using the method + + + + + Returns an instruction to call the specified closure + The delegate type to emit + The closure that defines the method to call + A that calls the closure as a method + + + + Creates a CodeInstruction loading a field (LD[S]FLD[A]) + The class/type where the field is defined + The name of the field (case sensitive) + Use address of field + + + + Creates a CodeInstruction storing to a field (ST[S]FLD) + The class/type where the field is defined + The name of the field (case sensitive) + + + + Returns a string representation of the code instruction + A string representation of the code instruction + + + + Exception block types + + + + The beginning of an exception block + + + + The beginning of a catch block + + + + The beginning of an except filter block (currently not supported to use in a patch) + + + + The beginning of a fault block + + + + The beginning of a finally block + + + + The end of an exception block + + + + An exception block + + + + Block type + + + + Catch type + + + + Creates an exception block + The + The catch type + + + + The Harmony instance is the main entry to Harmony. After creating one with an unique identifier, it is used to patch and query the current application domain + + + + The unique identifier + + + + Set to true before instantiating Harmony to debug Harmony or use an environment variable to set HARMONY_DEBUG to '1' like this: cmd /C "set HARMONY_DEBUG=1 && game.exe" + This is for full debugging. To debug only specific patches, use the attribute + + + + Creates a new Harmony instance + A unique identifier (you choose your own) + A Harmony instance + + + + Searches the current assembly for Harmony annotations and uses them to create patches + This method can fail to use the correct assembly when being inlined. It calls StackTrace.GetFrame(1) which can point to the wrong method/assembly. If you are unsure or run into problems, use PatchAll(Assembly.GetExecutingAssembly()) instead. + + + + Creates a empty patch processor for an original method + The original method/constructor + A new instance + + + + Creates a patch class processor from an annotated class + The class/type + A new instance + + + + Creates a reverse patcher for one of your stub methods + The original method/constructor + The stand-in stub method as + A new instance + + + + Searches an assembly for Harmony annotations and uses them to create patches + The assembly + + + + Creates patches by manually specifying the methods + The original method/constructor + An optional prefix method wrapped in a object + An optional postfix method wrapped in a object + An optional transpiler method wrapped in a object + An optional finalizer method wrapped in a object + The replacement method that was created to patch the original method + + + + Patches a foreign method onto a stub method of yours and optionally applies transpilers during the process + The original method/constructor you want to duplicate + Your stub method as that will become the original. Needs to have the correct signature (either original or whatever your transpilers generates) + An optional transpiler as method that will be applied during the process + The replacement method that was created to patch the stub method + + + + Unpatches methods by patching them with zero patches. Fully unpatching is not supported. Be careful, unpatching is global + The optional Harmony ID to restrict unpatching to a specific Harmony instance + This method could be static if it wasn't for the fact that unpatching creates a new replacement method that contains your harmony ID + + + + Unpatches a method by patching it with zero patches. Fully unpatching is not supported. Be careful, unpatching is global + The original method/constructor + The + The optional Harmony ID to restrict unpatching to a specific Harmony instance + + + + Unpatches a method by patching it with zero patches. Fully unpatching is not supported. Be careful, unpatching is global + The original method/constructor + The patch method as method to remove + + + + Test for patches from a specific Harmony ID + The Harmony ID + True if patches for this ID exist + + + + Gets patch information for a given original method + The original method/constructor + The patch information as + + + + Gets the methods this instance has patched + An enumeration of original methods/constructors + + + + Gets all patched original methods in the appdomain + An enumeration of patched original methods/constructors + + + + Gets the original method from a given replacement method + A replacement method, for example from a stacktrace + The original method/constructor or null if not found + + + + Tries to get the method from a stackframe including dynamic replacement methods + The + For normal frames, frame.GetMethod() is returned. For frames containing patched methods, the replacement method is returned or null if no method can be found + + + + Gets the original method from the stackframe and uses original if method is a dynamic replacement + The + The original method from that stackframe + + + Gets Harmony version for all active Harmony instances + [out] The current Harmony version + A dictionary containing assembly versions keyed by Harmony IDs + + + + Under Mono, HarmonyException wraps IL compile errors with detailed information about the failure + + + + Default serialization constructor (not implemented) + The info + The context + + + + Get a list of IL instructions in pairs of offset+code + A list of key/value pairs which represent an offset and the code at that offset + + + + Get a list of IL instructions without offsets + A list of + + + + Get the error offset of the errornous IL instruction + The offset + + + + Get the index of the errornous IL instruction + The index into the list of instructions or -1 if not found + + + + A wrapper around a method to use it as a patch (for example a Prefix) + + + + The original method + + + + Class/type declaring this patch + + + + Patch method name + + + + Optional patch + + + + Array of argument types of the patch method + + + + of the patch + + + + Install this patch before patches with these Harmony IDs + + + + Install this patch after patches with these Harmony IDs + + + + Reverse patch type, see + + + + Create debug output for this patch + + + + Whether to use (true) or (false) mechanics + for -attributed delegate + + + + Default constructor + + + + Creates a patch from a given method + The original method + + + + Creates a patch from a given method + The original method + The patch + A list of harmony IDs that should come after this patch + A list of harmony IDs that should come before this patch + Set to true to generate debug output + + + + Creates a patch from a given method + The patch class/type + The patch method name + The optional argument types of the patch method (for overloaded methods) + + + + Gets the names of all internal patch info fields + A list of field names + + + + Merges annotations + The list of to merge + The merged + + + + Returns a string that represents the annotation + A string representation + + + + Annotation extensions + + + + Copies annotation information + The source + The destination + + + + Clones an annotation + The to clone + A copied + + + + Merges annotations + The master + The detail + A new, merged + + + + Gets all annotations on a class/type + The class/type + A list of all + + + + Gets merged annotations on a class/type + The class/type + The merged + + + + Gets all annotations on a method + The method/constructor + A list of + + + + Gets merged annotations on a method + The method/constructor + The merged + + + + + A mutable representation of an inline signature, similar to Mono.Cecil's CallSite. + Used by the calli instruction, can be used by transpilers + + + + + See + + + + See + + + + See + + + + The list of all parameter types or function pointer signatures received by the call site + + + + The return type or function pointer signature returned by the call site + + + + Returns a string representation of the inline signature + A string representation of the inline signature + + + + + A mutable representation of a parameter type with an attached type modifier, + similar to Mono.Cecil's OptionalModifierType / RequiredModifierType and C#'s modopt / modreq + + + + + Whether this is a modopt (optional modifier type) or a modreq (required modifier type) + + + + The modifier type attached to the parameter type + + + + The modified parameter type + + + + Returns a string representation of the modifier type + A string representation of the modifier type + + + + Patch serialization + + + + Control the binding of a serialized object to a type + Specifies the assembly name of the serialized object + Specifies the type name of the serialized object + The type of the object the formatter creates a new instance of + + + + Serializes a patch info + The + The serialized data + + + + Deserialize a patch info + The serialized data + A + + + + Compare function to sort patch priorities + The patch + Zero-based index + The priority + A standard sort integer (-1, 0, 1) + + + + Serializable patch information + + + + Prefixes as an array of + + + + Postfixes as an array of + + + + Transpilers as an array of + + + + Finalizers as an array of + + + + Returns if any of the patches wants debugging turned on + + + + Adds prefixes + An owner (Harmony ID) + The patch methods + + + + Adds a prefix + + + Removes prefixes + The owner of the prefixes, or * for all + + + + Adds postfixes + An owner (Harmony ID) + The patch methods + + + + Adds a postfix + + + Removes postfixes + The owner of the postfixes, or * for all + + + + Adds transpilers + An owner (Harmony ID) + The patch methods + + + + Adds a transpiler + + + Removes transpilers + The owner of the transpilers, or * for all + + + + Adds finalizers + An owner (Harmony ID) + The patch methods + + + + Adds a finalizer + + + Removes finalizers + The owner of the finalizers, or * for all + + + + Removes a patch using its method + The method of the patch to remove + + + + Gets a concatenated list of patches + The Harmony instance ID adding the new patches + The patches to add + The current patches + + + + Gets a list of patches with any from the given owner removed + The owner of the methods, or * for all + The current patches + + + + A serializable patch + + + + Zero-based index + + + + The owner (Harmony ID) + + + + The priority, see + + + + Keep this patch before the patches indicated in the list of Harmony IDs + + + + Keep this patch after the patches indicated in the list of Harmony IDs + + + + A flag that will log the replacement method via every time this patch is used to build the replacement, even in the future + + + + The method of the static patch method + + + + Creates a patch + The method of the patch + Zero-based index + An owner (Harmony ID) + The priority, see + A list of Harmony IDs for patches that should run after this patch + A list of Harmony IDs for patches that should run before this patch + A flag that will log the replacement method via every time this patch is used to build the replacement, even in the future + + + + Creates a patch + The method of the patch + Zero-based index + An owner (Harmony ID) + + + Get the patch method or a DynamicMethod if original patch method is a patch factory + The original method/constructor + The method of the patch + + + + Determines whether patches are equal + The other patch + true if equal + + + + Determines how patches sort + The other patch + integer to define sort order (-1, 0, 1) + + + + Hash function + A hash code + + + + A PatchClassProcessor used to turn on a class/type into patches + + + + Creates a patch class processor by pointing out a class. Similar to PatchAll() but without searching through all classes. + The Harmony instance + The class to process (need to have at least a [HarmonyPatch] attribute) + + + + Applies the patches + A list of all created replacement methods or null if patch class is not annotated + + + + A group of patches + + + + A collection of prefix + + + + A collection of postfix + + + + A collection of transpiler + + + + A collection of finalizer + + + + Gets all owners (Harmony IDs) or all known patches + The patch owners + + + + Creates a group of patches + An array of prefixes as + An array of postfixes as + An array of transpileres as + An array of finalizeres as + + + + A PatchProcessor handles patches on a method/constructor + + + + Creates an empty patch processor + The Harmony instance + The original method/constructor + + + + Adds a prefix + The prefix as a + A for chaining calls + + + + Adds a prefix + The prefix method + A for chaining calls + + + + Adds a postfix + The postfix as a + A for chaining calls + + + + Adds a postfix + The postfix method + A for chaining calls + + + + Adds a transpiler + The transpiler as a + A for chaining calls + + + + Adds a transpiler + The transpiler method + A for chaining calls + + + + Adds a finalizer + The finalizer as a + A for chaining calls + + + + Adds a finalizer + The finalizer method + A for chaining calls + + + + Gets all patched original methods in the appdomain + An enumeration of patched method/constructor + + + + Applies all registered patches + The generated replacement method + + + + Unpatches patches of a given type and/or Harmony ID + The patch type + Harmony ID or * for any + A for chaining calls + + + + Unpatches a specific patch + The method of the patch + A for chaining calls + + + + Gets patch information on an original + The original method/constructor + The patch information as + + + + Sort patch methods by their priority rules + The original method + Patches to sort + The sorted patch methods + + + + Gets Harmony version for all active Harmony instances + [out] The current Harmony version + A dictionary containing assembly version keyed by Harmony ID + + + + Creates a new empty generator to use when reading method bodies + A new + + + + Creates a new generator matching the method/constructor to use when reading method bodies + The original method/constructor to copy method information from + A new + + + + Returns the methods unmodified list of code instructions + The original method/constructor + Optionally an existing generator that will be used to create all local variables and labels contained in the result (if not specified, an internal generator is used) + A list containing all the original + + + + Returns the methods unmodified list of code instructions + The original method/constructor + A new generator that now contains all local variables and labels contained in the result + A list containing all the original + + + + Returns the methods current list of code instructions after all existing transpilers have been applied + The original method/constructor + Apply only the first count of transpilers + Optionally an existing generator that will be used to create all local variables and labels contained in the result (if not specified, an internal generator is used) + A list of + + + + Returns the methods current list of code instructions after all existing transpilers have been applied + The original method/constructor + A new generator that now contains all local variables and labels contained in the result + Apply only the first count of transpilers + A list of + + + + A low level way to read the body of a method. Used for quick searching in methods + The original method + All instructions as opcode/operand pairs + + + + A low level way to read the body of a method. Used for quick searching in methods + The original method + An existing generator that will be used to create all local variables and labels contained in the result + All instructions as opcode/operand pairs + + + + A patch priority + + + + Patch last + + + + Patch with very low priority + + + + Patch with low priority + + + + Patch with lower than normal priority + + + + Patch with normal priority + + + + Patch with higher than normal priority + + + + Patch with high priority + + + + Patch with very high priority + + + + Patch first + + + + A reverse patcher + + + + Creates a reverse patcher + The Harmony instance + The original method/constructor + Your stand-in stub method as + + + + Applies the patch + The type of patch, see + The generated replacement method + + + + A collection of commonly used transpilers + + + + A transpiler that replaces all occurrences of a given method with another one using the same signature + The enumeration of to act on + Method or constructor to search for + Method or constructor to replace with + Modified enumeration of + + + + A transpiler that alters instructions that match a predicate by calling an action + The enumeration of to act on + A predicate selecting the instructions to change + An action to apply to matching instructions + Modified enumeration of + + + + A transpiler that logs a text at the beginning of the method + The instructions to act on + The log text + Modified enumeration of + + + + A helper class for reflection related functions + + + + Shortcut for to simplify the use of reflections and make it work for any access level + + + + Shortcut for to simplify the use of reflections and make it work for any access level but only within the current type + + + + Enumerates all assemblies in the current app domain, excluding visual studio assemblies + An enumeration of + + + Gets a type by name. Prefers a full name with namespace but falls back to the first type matching the name otherwise + The name + A type or null if not found + + + + Gets all successfully loaded types from a given assembly + The assembly + An array of types + + This calls and returns , while catching any thrown . + If such an exception is thrown, returns the successfully loaded types (, + filtered for non-null values). + + + + + Enumerates all successfully loaded types in the current app domain, excluding visual studio assemblies + An enumeration of all in all assemblies, excluding visual studio assemblies + + + Applies a function going up the type hierarchy and stops at the first non-null result + Result type of func() + The class/type to start with + The evaluation function returning T + The first non-null result, or null if no match + + The type hierarchy of a class or value type (including struct) does NOT include implemented interfaces, + and the type hierarchy of an interface is only itself (regardless of whether that interface implements other interfaces). + The top-most type in the type hierarchy of all non-interface types (including value types) is . + + + + + Applies a function going into inner types and stops at the first non-null result + Generic type parameter + The class/type to start with + The evaluation function returning T + The first non-null result, or null if no match + + + + Gets the reflection information for a directly declared field + The class/type where the field is defined + The name of the field + A field or null when type/name is null or when the field cannot be found + + + + Gets the reflection information for a directly declared field + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + A field or null when the field cannot be found + + + + Gets the reflection information for a field by searching the type and all its super types + The class/type where the field is defined + The name of the field (case sensitive) + A field or null when type/name is null or when the field cannot be found + + + + Gets the reflection information for a field by searching the type and all its super types + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + A field or null when the field cannot be found + + + + Gets the reflection information for a field + The class/type where the field is declared + The zero-based index of the field inside the class definition + A field or null when type is null or when the field cannot be found + + + + Gets the reflection information for a directly declared property + The class/type where the property is declared + The name of the property (case sensitive) + A property or null when type/name is null or when the property cannot be found + + + + Gets the reflection information for a directly declared property + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + A property or null when the property cannot be found + + + + Gets the reflection information for the getter method of a directly declared property + The class/type where the property is declared + The name of the property (case sensitive) + A method or null when type/name is null or when the property cannot be found + + + + Gets the reflection information for the getter method of a directly declared property + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + A method or null when the property cannot be found + + + + Gets the reflection information for the setter method of a directly declared property + The class/type where the property is declared + The name of the property (case sensitive) + A method or null when type/name is null or when the property cannot be found + + + + Gets the reflection information for the Setter method of a directly declared property + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + A method or null when the property cannot be found + + + + Gets the reflection information for a property by searching the type and all its super types + The class/type + The name + A property or null when type/name is null or when the property cannot be found + + + + Gets the reflection information for a property by searching the type and all its super types + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + A property or null when the property cannot be found + + + + Gets the reflection information for the getter method of a property by searching the type and all its super types + The class/type + The name + A method or null when type/name is null or when the property cannot be found + + + + Gets the reflection information for the getter method of a property by searching the type and all its super types + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + A method or null when type/name is null or when the property cannot be found + + + + Gets the reflection information for the setter method of a property by searching the type and all its super types + The class/type + The name + A method or null when type/name is null or when the property cannot be found + + + + Gets the reflection information for the setter method of a property by searching the type and all its super types + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + A method or null when type/name is null or when the property cannot be found + + + + Gets the reflection information for a directly declared method + The class/type where the method is declared + The name of the method (case sensitive) + Optional parameters to target a specific overload of the method + Optional list of types that define the generic version of the method + A method or null when type/name is null or when the method cannot be found + + + + Gets the reflection information for a directly declared method + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + Optional parameters to target a specific overload of the method + Optional list of types that define the generic version of the method + A method or null when the method cannot be found + + + + Gets the reflection information for a method by searching the type and all its super types + The class/type where the method is declared + The name of the method (case sensitive) + Optional parameters to target a specific overload of the method + Optional list of types that define the generic version of the method + A method or null when type/name is null or when the method cannot be found + + + + Gets the reflection information for a method by searching the type and all its super types + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + Optional parameters to target a specific overload of the method + Optional list of types that define the generic version of the method + A method or null when the method cannot be found + + + + Gets the method of an enumerator method + Enumerator method that creates the enumerator + The internal method of the enumerator or null if no valid enumerator is detected + + + Gets the names of all method that are declared in a type + The declaring class/type + A list of method names + + + + Gets the names of all method that are declared in the type of the instance + An instance of the type to search in + A list of method names + + + + Gets the names of all fields that are declared in a type + The declaring class/type + A list of field names + + + + Gets the names of all fields that are declared in the type of the instance + An instance of the type to search in + A list of field names + + + + Gets the names of all properties that are declared in a type + The declaring class/type + A list of property names + + + + Gets the names of all properties that are declared in the type of the instance + An instance of the type to search in + A list of property names + + + + Gets the type of any class member of + A member + The class/type of this member + + + + Test if a class member is actually an concrete implementation + A member + True if the member is a declared + + + + Gets the real implementation of a class member + A member + The member itself if its declared. Otherwise the member that is actually implemented in some base type + + + + Gets the reflection information for a directly declared constructor + The class/type where the constructor is declared + Optional parameters to target a specific overload of the constructor + Optional parameters to only consider static constructors + A constructor info or null when type is null or when the constructor cannot be found + + + + Gets the reflection information for a constructor by searching the type and all its super types + The class/type where the constructor is declared + Optional parameters to target a specific overload of the method + Optional parameters to only consider static constructors + A constructor info or null when type is null or when the method cannot be found + + + + Gets reflection information for all declared constructors + The class/type where the constructors are declared + Optional parameters to only consider static constructors + A list of constructor infos + + + + Gets reflection information for all declared methods + The class/type where the methods are declared + A list of methods + + + + Gets reflection information for all declared properties + The class/type where the properties are declared + A list of properties + + + + Gets reflection information for all declared fields + The class/type where the fields are declared + A list of fields + + + + Gets the return type of a method or constructor + The method/constructor + The return type + + + + Given a type, returns the first inner type matching a recursive search by name + The class/type to start searching at + The name of the inner type (case sensitive) + The inner type or null if type/name is null or if a type with that name cannot be found + + + + Given a type, returns the first inner type matching a recursive search with a predicate + The class/type to start searching at + The predicate to search with + The inner type or null if type/predicate is null or if a type with that name cannot be found + + + + Given a type, returns the first method matching a predicate + The class/type to start searching at + The predicate to search with + The method or null if type/predicate is null or if a type with that name cannot be found + + + + Given a type, returns the first constructor matching a predicate + The class/type to start searching at + The predicate to search with + The constructor info or null if type/predicate is null or if a type with that name cannot be found + + + + Given a type, returns the first property matching a predicate + The class/type to start searching at + The predicate to search with + The property or null if type/predicate is null or if a type with that name cannot be found + + + + Returns an array containing the type of each object in the given array + An array of objects + An array of types or an empty array if parameters is null (if an object is null, the type for it will be object) + + + + Creates an array of input parameters for a given method and a given set of potential inputs + The method/constructor you are planing to call + The possible input parameters in any order + An object array matching the method signature + + + + A readable/assignable reference delegate to an instance field of a class or static field (NOT an instance field of a struct) + + An arbitrary type if the field is static; otherwise the class that defines the field, or a parent class (including ), + implemented interface, or derived class of this type + + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The runtime instance to access the field (ignored and can be omitted for static fields) + A readable/assignable reference to the field + Null instance passed to a non-static field ref delegate + + Instance of invalid type passed to a non-static field ref delegate + (this can happen if is a parent class or interface of the field's declaring type) + + + + This delegate cannot be used for instance fields of structs, since a struct instance passed to the delegate would be passed by + value and thus would be a copy that only exists within the delegate's invocation. This is fine for a readonly reference, + but makes assignment futile. Use instead. + + + Note that is not required to be the field's declaring type. It can be a parent class (including ), + implemented interface, or a derived class of the field's declaring type ("instanceOfT is FieldDeclaringType" must be possible). + Specifically, must be assignable from OR to the field's declaring type. + Technically, this allows Nullable, although Nullable is only relevant for structs, and since only static fields of structs + are allowed for this delegate, and the instance passed to such a delegate is ignored, this hardly matters. + + + Similarly, is not required to be the field's field type, unless that type is a non-enum value type. + It can be a parent class (including object) or implemented interface of the field's field type. It cannot be a derived class. + This variance is not allowed for value types, since that would require boxing/unboxing, which is not allowed for ref values. + Special case for enum types: can also be the underlying integral type of the enum type. + Specifically, for reference types, must be assignable from + the field's field type; for non-enum value types, must be exactly the field's field type; for enum types, + must be either the field's field type or the underyling integral type of that field type. + + + This delegate supports static fields, even those defined in structs, for legacy reasons. + For such static fields, is effectively ignored. + Consider using (and StaticFieldRefAccess methods that return it) instead for static fields. + + + + + + Creates a field reference delegate for an instance field of a class + The class that defines the instance field, or derived class of this type + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The name of the field + A readable/assignable delegate + + + For backwards compatibility, there is no class constraint on . + Instead, the non-value-type check is done at runtime within the method. + + + + + + Creates an instance field reference for a specific instance of a class + The class that defines the instance field, or derived class of this type + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The instance + The name of the field + A readable/assignable reference to the field + + + This method is meant for one-off access to a field's value for a single instance. + If you need to access a field's value for potentially multiple instances, use instead. + FieldRefAccess<T, F>(instance, fieldName) is functionally equivalent to FieldRefAccess<T, F>(fieldName)(instance). + + + For backwards compatibility, there is no class constraint on . + Instead, the non-value-type check is done at runtime within the method. + + + + + + Creates a field reference delegate for an instance field of a class or static field (NOT an instance field of a struct) + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + + The type that defines the field, or derived class of this type; must not be a struct type unless the field is static + + The name of the field + + A readable/assignable delegate with T=object + (for static fields, the instance delegate parameter is ignored) + + + + This method is meant for cases where the given type is only known at runtime and thus can't be used as a type parameter T + in e.g. . + + + This method supports static fields, even those defined in structs, for legacy reasons. + Consider using (and other overloads) instead for static fields. + + + + + + Creates a field reference delegate for an instance field of a class or static field (NOT an instance field of a struct) + type of the field + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + A readable/assignable delegate with T=object + + + Creates a field reference delegate for an instance field of a class or static field (NOT an instance field of a struct) + + An arbitrary type if the field is static; otherwise the class that defines the field, or a parent class (including ), + implemented interface, or derived class of this type ("instanceOfT is FieldDeclaringType" must be possible) + + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The field + A readable/assignable delegate + + + This method is meant for cases where the field has already been obtained, avoiding the field searching cost in + e.g. . + + + This method supports static fields, even those defined in structs, for legacy reasons. + For such static fields, is effectively ignored. + Consider using (and other overloads) instead for static fields. + + + For backwards compatibility, there is no class constraint on . + Instead, the non-value-type check is done at runtime within the method. + + + + + + Creates a field reference for an instance field of a class + + The type that defines the field; or a parent class (including ), implemented interface, or derived class of this type + ("instanceOfT is FieldDeclaringType" must be possible) + + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The instance + The field + A readable/assignable reference to the field + + + This method is meant for one-off access to a field's value for a single instance and where the field has already been obtained. + If you need to access a field's value for potentially multiple instances, use instead. + FieldRefAccess<T, F>(instance, fieldInfo) is functionally equivalent to FieldRefAccess<T, F>(fieldInfo)(instance). + + + For backwards compatibility, there is no class constraint on . + Instead, the non-value-type check is done at runtime within the method. + + + + + + A readable/assignable reference delegate to an instance field of a struct + The struct that defines the instance field + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + A reference to the runtime instance to access the field + A readable/assignable reference to the field + + + + Creates a field reference delegate for an instance field of a struct + The struct that defines the instance field + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The name of the field + A readable/assignable delegate + + + + Creates an instance field reference for a specific instance of a struct + The struct that defines the instance field + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The instance + The name of the field + A readable/assignable reference to the field + + + This method is meant for one-off access to a field's value for a single instance. + If you need to access a field's value for potentially multiple instances, use instead. + StructFieldRefAccess<T, F>(ref instance, fieldName) is functionally equivalent to StructFieldRefAccess<T, F>(fieldName)(ref instance). + + + + + + Creates a field reference delegate for an instance field of a struct + The struct that defines the instance field + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The field + A readable/assignable delegate + + + This method is meant for cases where the field has already been obtained, avoiding the field searching cost in + e.g. . + + + + + + Creates a field reference for an instance field of a struct + The struct that defines the instance field + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The instance + The field + A readable/assignable reference to the field + + + This method is meant for one-off access to a field's value for a single instance and where the field has already been obtained. + If you need to access a field's value for potentially multiple instances, use instead. + StructFieldRefAccess<T, F>(ref instance, fieldInfo) is functionally equivalent to StructFieldRefAccess<T, F>(fieldInfo)(ref instance). + + + + + + A readable/assignable reference delegate to a static field + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + A readable/assignable reference to the field + + + + Creates a static field reference + The type (can be class or struct) the field is defined in + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The name of the field + A readable/assignable reference to the field + + + + Creates a static field reference + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The type (can be class or struct) the field is defined in + The name of the field + A readable/assignable reference to the field + + + + Creates a static field reference + The type of the field + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + A readable/assignable reference to the field + + + + Creates a static field reference + An arbitrary type (by convention, the type the field is defined in) + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The field + A readable/assignable reference to the field + + The type parameter is only used in exception messaging and to distinguish between this method overload + and the overload (which returns a rather than a reference). + + + + + Creates a static field reference delegate + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The field + A readable/assignable delegate + + + + Creates a delegate to a given method + The delegate Type + The method to create a delegate from. + + Only applies for instance methods. If null (default), returned delegate is an open (a.k.a. unbound) instance delegate + where an instance is supplied as the first argument to the delegate invocation; else, delegate is a closed (a.k.a. bound) + instance delegate where the delegate invocation always applies to the given . + + + Only applies for instance methods. If true (default) and is virtual, invocation of the delegate + calls the instance method virtually (the instance type's most-derived/overriden implementation of the method is called); + else, invocation of the delegate calls the exact specified (this is useful for calling base class methods) + Note: if false and is an interface method, an ArgumentException is thrown. + + A delegate of given to given + + + Delegate invocation is more performant and more convenient to use than + at a one-time setup cost. + + + Works for both type of static and instance methods, both open and closed (a.k.a. unbound and bound) instance methods, + and both class and struct methods. + + + + + + Creates a delegate to a given method + The delegate Type + The method in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + + Only applies for instance methods. If null (default), returned delegate is an open (a.k.a. unbound) instance delegate + where an instance is supplied as the first argument to the delegate invocation; else, delegate is a closed (a.k.a. bound) + instance delegate where the delegate invocation always applies to the given . + + + Only applies for instance methods. If true (default) and is virtual, invocation of the delegate + calls the instance method virtually (the instance type's most-derived/overriden implementation of the method is called); + else, invocation of the delegate calls the exact specified (this is useful for calling base class methods) + Note: if false and is an interface method, an ArgumentException is thrown. + + A delegate of given to given + + + Delegate invocation is more performant and more convenient to use than + at a one-time setup cost. + + + Works for both type of static and instance methods, both open and closed (a.k.a. unbound and bound) instance methods, + and both class and struct methods. + + + + + + Creates a delegate for a given delegate definition, attributed with [] + The delegate Type, attributed with [] + + Only applies for instance methods. If null (default), returned delegate is an open (a.k.a. unbound) instance delegate + where an instance is supplied as the first argument to the delegate invocation; else, delegate is a closed (a.k.a. bound) + instance delegate where the delegate invocation always applies to the given . + + A delegate of given to the method specified via [] + attributes on + + This calls with the method and virtualCall arguments + determined from the [] attributes on , + and the given (for closed instance delegates). + + + + + Returns who called the current method + The calling method/constructor (excluding the caller) + + + + Rethrows an exception while preserving its stack trace (throw statement typically clobbers existing stack traces) + The exception to rethrow + + + + True if the current runtime is based on Mono, false otherwise (.NET) + + + + True if the current runtime is .NET Framework, false otherwise (.NET Core or Mono, although latter isn't guaranteed) + + + + True if the current runtime is .NET Core, false otherwise (Mono or .NET Framework) + + + + Throws a missing member runtime exception + The type that is involved + A list of names + + + + Gets default value for a specific type + The class/type + The default value + + + + Creates an (possibly uninitialized) instance of a given type + The class/type + The new instance + + + + Creates an (possibly uninitialized) instance of a given type + The class/type + The new instance + + + + + A cache for the or similar Add methods for different types. + + + + Makes a deep copy of any object + The type of the instance that should be created; for legacy reasons, this must be a class or interface + The original object + A copy of the original object but of type T + + + + Makes a deep copy of any object + The type of the instance that should be created + The original object + [out] The copy of the original object + Optional value transformation function (taking a field name and src/dst instances) + The optional path root to start with + + + + Makes a deep copy of any object + The original object + The type of the instance that should be created + Optional value transformation function (taking a field name and src/dst instances) + The optional path root to start with + The copy of the original object + + + + Tests if a type is a struct + The type + True if the type is a struct + + + + Tests if a type is a class + The type + True if the type is a class + + + + Tests if a type is a value type + The type + True if the type is a value type + + + + Tests if a type is an integer type + The type + True if the type represents some integer + + + + Tests if a type is a floating point type + The type + True if the type represents some floating point + + + + Tests if a type is a numerical type + The type + True if the type represents some number + + + + Tests if a type is void + The type + True if the type is void + + + + Test whether an instance is of a nullable type + Type of instance + An instance to test + True if instance is of nullable type, false if not + + + + Tests whether a type or member is static, as defined in C# + The type or member + True if the type or member is static + + + + Tests whether a type is static, as defined in C# + The type + True if the type is static + + + + Tests whether a property is static, as defined in C# + The property + True if the property is static + + + + Tests whether an event is static, as defined in C# + The event + True if the event is static + + + + Calculates a combined hash code for an enumeration of objects + The objects + The hash code + + + + A CodeInstruction match + + + The name of the match + + + The matched opcodes + + + The matched operands + + + The jumps from the match + + + The jumps to the match + + + The match predicate + + + Creates a code match + The optional opcode + The optional operand + The optional name + + + + Creates a code match that calls a method + The lambda expression using the method + The optional name + + + + Creates a code match that calls a method + The lambda expression using the method + The optional name + + + + Creates a code match + The CodeInstruction + An optional name + + + + Creates a code match + The predicate + An optional name + + + + Returns a string that represents the match + A string representation + + + + A CodeInstruction matcher + + + The current position + The index or -1 if out of bounds + + + + Gets the number of code instructions in this matcher + The count + + + + Checks whether the position of this CodeMatcher is within bounds + True if this CodeMatcher is valid + + + + Checks whether the position of this CodeMatcher is outside its bounds + True if this CodeMatcher is invalid + + + + Gets the remaining code instructions + The remaining count + + + + Gets the opcode at the current position + The opcode + + + + Gets the operand at the current position + The operand + + + + Gets the labels at the current position + The labels + + + + Gets the exception blocks at the current position + The blocks + + + + Creates an empty code matcher + + + Creates a code matcher from an enumeration of instructions + The instructions (transpiler argument) + An optional IL generator + + + + Makes a clone of this instruction matcher + A copy of this matcher + + + + Gets instructions at the current position + The instruction + + + + Gets instructions at the current position with offset + The offset + The instruction + + + + Gets all instructions + A list of instructions + + + + Gets all instructions as an enumeration + A list of instructions + + + + Gets some instructions counting from current position + Number of instructions + A list of instructions + + + + Gets all instructions within a range + The start index + The end index + A list of instructions + + + + Gets all instructions within a range (relative to current position) + The start offset + The end offset + A list of instructions + + + + Gets a list of all distinct labels + The instructions (transpiler argument) + A list of Labels + + + + Reports a failure + The method involved + The logger + True if current position is invalid and error was logged + + + + Throw an InvalidOperationException if current state is invalid (position out of bounds / last match failed) + Explanation of where/why the exception was thrown that will be added to the exception message + The same code matcher + + + + Throw an InvalidOperationException if current state is invalid (position out of bounds / last match failed), + or if the matches do not match at current position + Explanation of where/why the exception was thrown that will be added to the exception message + Some code matches + The same code matcher + + + + Throw an InvalidOperationException if current state is invalid (position out of bounds / last match failed), + or if the matches do not match at any point between current position and the end + Explanation of where/why the exception was thrown that will be added to the exception message + Some code matches + The same code matcher + + + + Throw an InvalidOperationException if current state is invalid (position out of bounds / last match failed), + or if the matches do not match at any point between current position and the start + Explanation of where/why the exception was thrown that will be added to the exception message + Some code matches + The same code matcher + + + + Throw an InvalidOperationException if current state is invalid (position out of bounds / last match failed), + or if the check function returns false + Explanation of where/why the exception was thrown that will be added to the exception message + Function that checks validity of current state. If it returns false, an exception is thrown + The same code matcher + + + + Sets an instruction at current position + The instruction to set + The same code matcher + + + + Sets instruction at current position and advances + The instruction + The same code matcher + + + + Sets opcode and operand at current position + The opcode + The operand + The same code matcher + + + + Sets opcode and operand at current position and advances + The opcode + The operand + The same code matcher + + + + Sets opcode at current position and advances + The opcode + The same code matcher + + + + Sets operand at current position and advances + The operand + The same code matcher + + + + Creates a label at current position + [out] The label + The same code matcher + + + + Creates a label at a position + The position + [out] The new label + The same code matcher + + + + Creates a label at a position + The offset + [out] The new label + The same code matcher + + + + Adds an enumeration of labels to current position + The labels + The same code matcher + + + + Adds an enumeration of labels at a position + The position + The labels + The same code matcher + + + + Sets jump to + Branch instruction + Destination for the jump + [out] The created label + The same code matcher + + + + Inserts some instructions + The instructions + The same code matcher + + + + Inserts an enumeration of instructions + The instructions + The same code matcher + + + + Inserts a branch + The branch opcode + Branch destination + The same code matcher + + + + Inserts some instructions and advances the position + The instructions + The same code matcher + + + + Inserts an enumeration of instructions and advances the position + The instructions + The same code matcher + + + + Inserts a branch and advances the position + The branch opcode + Branch destination + The same code matcher + + + + Removes current instruction + The same code matcher + + + + Removes some instruction from current position by count + Number of instructions + The same code matcher + + + + Removes the instructions in a range + The start + The end + The same code matcher + + + + Removes the instructions in a offset range + The start offset + The end offset + The same code matcher + + + + Advances the current position + The offset + The same code matcher + + + + Moves the current position to the start + The same code matcher + + + + Moves the current position to the end + The same code matcher + + + + Searches forward with a predicate and advances position + The predicate + The same code matcher + + + + Searches backwards with a predicate and reverses position + The predicate + The same code matcher + + + + Matches forward and advances position to beginning of matching sequence + Some code matches + The same code matcher + + + + Matches forward and advances position to ending of matching sequence + Some code matches + The same code matcher + + + + Matches backwards and reverses position to beginning of matching sequence + Some code matches + The same code matcher + + + + Matches backwards and reverses position to ending of matching sequence + Some code matches + The same code matcher + + + + Repeats a match action until boundaries are met + The match action + An optional action that is executed when no match is found + The same code matcher + + + + Gets a match by its name + The match name + An instruction + + + + General extensions for common cases + + + + Joins an enumeration with a value converter and a delimiter to a string + The inner type of the enumeration + The enumeration + An optional value converter (from T to string) + An optional delimiter + The values joined into a string + + + + Converts an array of types (for example methods arguments) into a human readable form + The array of types + A human readable description including brackets + + + + A full description of a type + The type + A human readable description + + + + A a full description of a method or a constructor without assembly details but with generics + The method/constructor + A human readable description + + + + A helper converting parameter infos to types + The array of parameter infos + An array of types + + + + A helper to access a value via key from a dictionary + The key type + The value type + The dictionary + The key + The value for the key or the default value (of T) if that key does not exist + + + + A helper to access a value via key from a dictionary with extra casting + The value type + The dictionary + The key + The value for the key or the default value (of T) if that key does not exist or cannot be cast to T + + + + Escapes Unicode and ASCII non printable characters + The string to convert + The string to convert + A string literal surrounded by + + + + Extensions for + + + + Returns if an is initialized and valid + The + + + + Shortcut for testing whether the operand is equal to a non-null value + The + The value + True if the operand has the same type and is equal to the value + + + + Shortcut for testing whether the operand is equal to a non-null value + The + The value + True if the operand is equal to the value + This is an optimized version of for + + + + Shortcut for code.opcode == opcode && code.OperandIs(operand) + The + The + The operand value + True if the opcode is equal to the given opcode and the operand has the same type and is equal to the given operand + + + + Shortcut for code.opcode == opcode && code.OperandIs(operand) + The + The + The operand value + True if the opcode is equal to the given opcode and the operand is equal to the given operand + This is an optimized version of for + + + + Tests for any form of Ldarg* + The + The (optional) index + True if it matches one of the variations + + + + Tests for Ldarga/Ldarga_S + The + The (optional) index + True if it matches one of the variations + + + + Tests for Starg/Starg_S + The + The (optional) index + True if it matches one of the variations + + + + Tests for any form of Ldloc* + The + The optional local variable + True if it matches one of the variations + + + + Tests for any form of Stloc* + The + The optional local variable + True if it matches one of the variations + + + + Tests if the code instruction branches + The + The label if the instruction is a branch operation or if not + True if the instruction branches + + + + Tests if the code instruction calls the method/constructor + The + The method + True if the instruction calls the method or constructor + + + + Tests if the code instruction loads a constant + The + True if the instruction loads a constant + + + + Tests if the code instruction loads an integer constant + The + The integer constant + True if the instruction loads the constant + + + + Tests if the code instruction loads a floating point constant + The + The floating point constant + True if the instruction loads the constant + + + + Tests if the code instruction loads an enum constant + The + The enum + True if the instruction loads the constant + + + + Tests if the code instruction loads a string constant + The + The string + True if the instruction loads the constant + + + + Tests if the code instruction loads a field + The + The field + Set to true if the address of the field is loaded + True if the instruction loads the field + + + + Tests if the code instruction stores a field + The + The field + True if the instruction stores this field + + + + Adds labels to the code instruction and return it + The + One or several to add + The same code instruction + + + Adds labels to the code instruction and return it + The + An enumeration of + The same code instruction + + + Extracts all labels from the code instruction and returns them + The + A list of + + + Moves all labels from the code instruction to another one + The to move the labels from + The other to move the labels to + The code instruction labels were moved from (now empty) + + + Moves all labels from another code instruction to the current one + The to move the labels to + The other to move the labels from + The code instruction that received the labels + + + Adds ExceptionBlocks to the code instruction and return it + The + One or several to add + The same code instruction + + + Adds ExceptionBlocks to the code instruction and return it + The + An enumeration of + The same code instruction + + + Extracts all ExceptionBlocks from the code instruction and returns them + The + A list of + + + Moves all ExceptionBlocks from the code instruction to another one + The to move the ExceptionBlocks from + The other to move the ExceptionBlocks to + The code instruction blocks were moved from (now empty) + + + Moves all ExceptionBlocks from another code instruction to the current one + The to move the ExceptionBlocks to + The other to move the ExceptionBlocks from + The code instruction that received the blocks + + + General extensions for collections + + + + A simple way to execute code for every element in a collection + The inner type of the collection + The collection + The action to execute + + + + A simple way to execute code for elements in a collection matching a condition + The inner type of the collection + The collection + The predicate + The action to execute + + + + A helper to add an item to a collection + The inner type of the collection + The collection + The item to add + The collection containing the item + + + + A helper to add an item to an array + The inner type of the collection + The array + The item to add + The array containing the item + + + + A helper to add items to an array + The inner type of the collection + The array + The items to add + The array containing the items + + + + General extensions for collections + + + + Tests a class member if it has an IL method body (external methods for example don't have a body) + The member to test + Returns true if the member has an IL body or false if not + + + A file log for debugging + + + + Set this to make Harmony write its log content to this stream + + + + Full pathname of the log file, defaults to a file called harmony.log.txt on your Desktop + + + + The indent character. The default is tab + + + + The current indent level + + + + Changes the indentation level + The value to add to the indentation level + + + + Log a string in a buffered way. Use this method only if you are sure that FlushBuffer will be called + or else logging information is incomplete in case of a crash + The string to log + + + + Logs a list of string in a buffered way. Use this method only if you are sure that FlushBuffer will be called + or else logging information is incomplete in case of a crash + A list of strings to log (they will not be re-indented) + + + + Returns the log buffer and optionally empties it + True to empty the buffer + The buffer. + + + + Replaces the buffer with new lines + The lines to store + + + + Flushes the log buffer to disk (use in combination with LogBuffered) + + + + Log a string directly to disk. Slower method that prevents missing information in case of a crash + The string to log. + + + + Log a string directly to disk if Harmony.DEBUG is true. Slower method that prevents missing information in case of a crash + The string to log. + + + + Resets and deletes the log + + + + Logs some bytes as hex values + The pointer to some memory + The length of bytes to log + + + + A helper class to retrieve reflection info for non-private methods + + + + Given a lambda expression that calls a method, returns the method info + The lambda expression using the method + The method in the lambda expression + + + + Given a lambda expression that calls a method, returns the method info + The generic type + The lambda expression using the method + The method in the lambda expression + + + + Given a lambda expression that calls a method, returns the method info + The generic type + The generic result type + The lambda expression using the method + The method in the lambda expression + + + + Given a lambda expression that calls a method, returns the method info + The lambda expression using the method + The method in the lambda expression + + + + A reflection helper to read and write private elements + The result type defined by GetValue() + + + + Creates a traverse instance from an existing instance + The existing instance + + + + Gets/Sets the current value + The value to read or write + + + + A reflection helper to read and write private elements + + + + Creates a new traverse instance from a class/type + The class/type + A instance + + + + Creates a new traverse instance from a class T + The class + A instance + + + + Creates a new traverse instance from an instance + The object + A instance + + + + Creates a new traverse instance from a named type + The type name, for format see + A instance + + + + Creates a new and empty traverse instance + + + + Creates a new traverse instance from a class/type + The class/type + + + + Creates a new traverse instance from an instance + The object + + + + Gets the current value + The value + + + + Gets the current value + The type of the value + The value + + + + Invokes the current method with arguments and returns the result + The method arguments + The value returned by the method + + + + Invokes the current method with arguments and returns the result + The type of the value + The method arguments + The value returned by the method + + + + Sets a value of the current field or property + The value + The same traverse instance + + + + Gets the type of the current field or property + The type + + + + Moves the current traverse instance to a inner type + The type name + A traverse instance + + + + Moves the current traverse instance to a field + The type name + A traverse instance + + + + Moves the current traverse instance to a field + The type of the field + The type name + A traverse instance + + + + Gets all fields of the current type + A list of field names + + + + Moves the current traverse instance to a property + The type name + Optional property index + A traverse instance + + + + Moves the current traverse instance to a field + The type of the property + The type name + Optional property index + A traverse instance + + + + Gets all properties of the current type + A list of property names + + + + Moves the current traverse instance to a method + The name of the method + The arguments defining the argument types of the method overload + A traverse instance + + + + Moves the current traverse instance to a method + The name of the method + The argument types of the method + The arguments for the method + A traverse instance + + + + Gets all methods of the current type + A list of method names + + + + Checks if the current traverse instance is for a field + True if its a field + + + + Checks if the current traverse instance is for a property + True if its a property + + + + Checks if the current traverse instance is for a method + True if its a method + + + + Checks if the current traverse instance is for a type + True if its a type + + + + Iterates over all fields of the current type and executes a traverse action + Original object + The action receiving a instance for each field + + + + Iterates over all fields of the current type and executes a traverse action + Original object + Target object + The action receiving a pair of instances for each field pair + + + + Iterates over all fields of the current type and executes a traverse action + Original object + Target object + The action receiving a dot path representing the field pair and the instances + + + + Iterates over all properties of the current type and executes a traverse action + Original object + The action receiving a instance for each property + + + + Iterates over all properties of the current type and executes a traverse action + Original object + Target object + The action receiving a pair of instances for each property pair + + + + Iterates over all properties of the current type and executes a traverse action + Original object + Target object + The action receiving a dot path representing the property pair and the instances + + + + A default field action that copies fields to fields + + + + Returns a string that represents the current traverse + A string representation + + + + diff --git a/CRIAOrgy/1.4/Assemblies/0MultiplayerAPI.dll b/CRIAOrgy/1.4/Assemblies/0MultiplayerAPI.dll new file mode 100644 index 0000000..38b8a0e Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/0MultiplayerAPI.dll differ diff --git a/CRIAOrgy/1.4/Assemblies/CRIAOrgy.dll b/CRIAOrgy/1.4/Assemblies/CRIAOrgy.dll new file mode 100644 index 0000000..f8c3265 Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/CRIAOrgy.dll differ diff --git a/CRIAOrgy/1.4/Assemblies/Milk.dll b/CRIAOrgy/1.4/Assemblies/Milk.dll new file mode 100644 index 0000000..0e58733 Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/Milk.dll differ diff --git a/CRIAOrgy/1.4/Assemblies/RJW.dll b/CRIAOrgy/1.4/Assemblies/RJW.dll new file mode 100644 index 0000000..cd73522 Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/RJW.dll differ diff --git a/CRIAOrgy/1.4/Assemblies/UnityEngine.AIModule.dll b/CRIAOrgy/1.4/Assemblies/UnityEngine.AIModule.dll new file mode 100644 index 0000000..78e7704 Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/UnityEngine.AIModule.dll differ diff --git a/CRIAOrgy/1.4/Assemblies/UnityEngine.ARModule.dll b/CRIAOrgy/1.4/Assemblies/UnityEngine.ARModule.dll new file mode 100644 index 0000000..faa2f92 Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/UnityEngine.ARModule.dll differ diff --git a/CRIAOrgy/1.4/Assemblies/UnityEngine.AccessibilityModule.dll b/CRIAOrgy/1.4/Assemblies/UnityEngine.AccessibilityModule.dll new file mode 100644 index 0000000..5229d35 Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/UnityEngine.AccessibilityModule.dll differ diff --git a/CRIAOrgy/1.4/Assemblies/UnityEngine.AndroidJNIModule.dll b/CRIAOrgy/1.4/Assemblies/UnityEngine.AndroidJNIModule.dll new file mode 100644 index 0000000..52d1ec4 Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/UnityEngine.AndroidJNIModule.dll differ diff --git a/CRIAOrgy/1.4/Assemblies/UnityEngine.ClothModule.dll b/CRIAOrgy/1.4/Assemblies/UnityEngine.ClothModule.dll new file mode 100644 index 0000000..e9a819d Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/UnityEngine.ClothModule.dll differ diff --git a/CRIAOrgy/1.4/Assemblies/UnityEngine.ClusterInputModule.dll b/CRIAOrgy/1.4/Assemblies/UnityEngine.ClusterInputModule.dll new file mode 100644 index 0000000..6324fbb Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/UnityEngine.ClusterInputModule.dll differ diff --git a/CRIAOrgy/1.4/Assemblies/UnityEngine.ClusterRendererModule.dll b/CRIAOrgy/1.4/Assemblies/UnityEngine.ClusterRendererModule.dll new file mode 100644 index 0000000..26ef8fa Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/UnityEngine.ClusterRendererModule.dll differ diff --git a/CRIAOrgy/1.4/Assemblies/UnityEngine.CoreModule.dll b/CRIAOrgy/1.4/Assemblies/UnityEngine.CoreModule.dll new file mode 100644 index 0000000..83b2b0a Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/UnityEngine.CoreModule.dll differ diff --git a/CRIAOrgy/1.4/Assemblies/UnityEngine.CrashReportingModule.dll b/CRIAOrgy/1.4/Assemblies/UnityEngine.CrashReportingModule.dll new file mode 100644 index 0000000..7d391bd Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/UnityEngine.CrashReportingModule.dll differ diff --git a/CRIAOrgy/1.4/Assemblies/UnityEngine.DSPGraphModule.dll b/CRIAOrgy/1.4/Assemblies/UnityEngine.DSPGraphModule.dll new file mode 100644 index 0000000..eba8cc1 Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/UnityEngine.DSPGraphModule.dll differ diff --git a/CRIAOrgy/1.4/Assemblies/UnityEngine.DirectorModule.dll b/CRIAOrgy/1.4/Assemblies/UnityEngine.DirectorModule.dll new file mode 100644 index 0000000..5976cc5 Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/UnityEngine.DirectorModule.dll differ diff --git a/CRIAOrgy/1.4/Assemblies/UnityEngine.GameCenterModule.dll b/CRIAOrgy/1.4/Assemblies/UnityEngine.GameCenterModule.dll new file mode 100644 index 0000000..4797dbe Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/UnityEngine.GameCenterModule.dll differ diff --git a/CRIAOrgy/1.4/Assemblies/UnityEngine.GridModule.dll b/CRIAOrgy/1.4/Assemblies/UnityEngine.GridModule.dll new file mode 100644 index 0000000..61c1ec4 Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/UnityEngine.GridModule.dll differ diff --git a/CRIAOrgy/1.4/Assemblies/UnityEngine.InputModule.dll b/CRIAOrgy/1.4/Assemblies/UnityEngine.InputModule.dll new file mode 100644 index 0000000..3be4fb9 Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/UnityEngine.InputModule.dll differ diff --git a/CRIAOrgy/1.4/Assemblies/UnityEngine.JSONSerializeModule.dll b/CRIAOrgy/1.4/Assemblies/UnityEngine.JSONSerializeModule.dll new file mode 100644 index 0000000..cd1981f Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/UnityEngine.JSONSerializeModule.dll differ diff --git a/CRIAOrgy/1.4/Assemblies/UnityEngine.LocalizationModule.dll b/CRIAOrgy/1.4/Assemblies/UnityEngine.LocalizationModule.dll new file mode 100644 index 0000000..292f854 Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/UnityEngine.LocalizationModule.dll differ diff --git a/CRIAOrgy/1.4/Assemblies/UnityEngine.ParticleSystemModule.dll b/CRIAOrgy/1.4/Assemblies/UnityEngine.ParticleSystemModule.dll new file mode 100644 index 0000000..c570bbe Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/UnityEngine.ParticleSystemModule.dll differ diff --git a/CRIAOrgy/1.4/Assemblies/UnityEngine.SpriteMaskModule.dll b/CRIAOrgy/1.4/Assemblies/UnityEngine.SpriteMaskModule.dll new file mode 100644 index 0000000..3de5b54 Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/UnityEngine.SpriteMaskModule.dll differ diff --git a/CRIAOrgy/1.4/Assemblies/UnityEngine.SpriteShapeModule.dll b/CRIAOrgy/1.4/Assemblies/UnityEngine.SpriteShapeModule.dll new file mode 100644 index 0000000..b59a5b8 Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/UnityEngine.SpriteShapeModule.dll differ diff --git a/CRIAOrgy/1.4/Assemblies/UnityEngine.StreamingModule.dll b/CRIAOrgy/1.4/Assemblies/UnityEngine.StreamingModule.dll new file mode 100644 index 0000000..69068e5 Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/UnityEngine.StreamingModule.dll differ diff --git a/CRIAOrgy/1.4/Assemblies/UnityEngine.SubsystemsModule.dll b/CRIAOrgy/1.4/Assemblies/UnityEngine.SubsystemsModule.dll new file mode 100644 index 0000000..b5b7429 Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/UnityEngine.SubsystemsModule.dll differ diff --git a/CRIAOrgy/1.4/Assemblies/UnityEngine.TerrainModule.dll b/CRIAOrgy/1.4/Assemblies/UnityEngine.TerrainModule.dll new file mode 100644 index 0000000..18b193e Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/UnityEngine.TerrainModule.dll differ diff --git a/CRIAOrgy/1.4/Assemblies/UnityEngine.TerrainPhysicsModule.dll b/CRIAOrgy/1.4/Assemblies/UnityEngine.TerrainPhysicsModule.dll new file mode 100644 index 0000000..48119b4 Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/UnityEngine.TerrainPhysicsModule.dll differ diff --git a/CRIAOrgy/1.4/Assemblies/UnityEngine.TilemapModule.dll b/CRIAOrgy/1.4/Assemblies/UnityEngine.TilemapModule.dll new file mode 100644 index 0000000..6c43665 Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/UnityEngine.TilemapModule.dll differ diff --git a/CRIAOrgy/1.4/Assemblies/UnityEngine.UIElementsModule.dll b/CRIAOrgy/1.4/Assemblies/UnityEngine.UIElementsModule.dll new file mode 100644 index 0000000..8dc2716 Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/UnityEngine.UIElementsModule.dll differ diff --git a/CRIAOrgy/1.4/Assemblies/UnityEngine.UNETModule.dll b/CRIAOrgy/1.4/Assemblies/UnityEngine.UNETModule.dll new file mode 100644 index 0000000..0234fad Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/UnityEngine.UNETModule.dll differ diff --git a/CRIAOrgy/1.4/Assemblies/UnityEngine.UnityAnalyticsModule.dll b/CRIAOrgy/1.4/Assemblies/UnityEngine.UnityAnalyticsModule.dll new file mode 100644 index 0000000..e3c39e8 Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/UnityEngine.UnityAnalyticsModule.dll differ diff --git a/CRIAOrgy/1.4/Assemblies/UnityEngine.UnityConnectModule.dll b/CRIAOrgy/1.4/Assemblies/UnityEngine.UnityConnectModule.dll new file mode 100644 index 0000000..7ec2470 Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/UnityEngine.UnityConnectModule.dll differ diff --git a/CRIAOrgy/1.4/Assemblies/UnityEngine.UnityWebRequestAssetBundleModule.dll b/CRIAOrgy/1.4/Assemblies/UnityEngine.UnityWebRequestAssetBundleModule.dll new file mode 100644 index 0000000..0024d85 Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/UnityEngine.UnityWebRequestAssetBundleModule.dll differ diff --git a/CRIAOrgy/1.4/Assemblies/UnityEngine.UnityWebRequestAudioModule.dll b/CRIAOrgy/1.4/Assemblies/UnityEngine.UnityWebRequestAudioModule.dll new file mode 100644 index 0000000..d4f9220 Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/UnityEngine.UnityWebRequestAudioModule.dll differ diff --git a/CRIAOrgy/1.4/Assemblies/UnityEngine.UnityWebRequestModule.dll b/CRIAOrgy/1.4/Assemblies/UnityEngine.UnityWebRequestModule.dll new file mode 100644 index 0000000..b99842a Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/UnityEngine.UnityWebRequestModule.dll differ diff --git a/CRIAOrgy/1.4/Assemblies/UnityEngine.UnityWebRequestTextureModule.dll b/CRIAOrgy/1.4/Assemblies/UnityEngine.UnityWebRequestTextureModule.dll new file mode 100644 index 0000000..d8b643a Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/UnityEngine.UnityWebRequestTextureModule.dll differ diff --git a/CRIAOrgy/1.4/Assemblies/UnityEngine.UnityWebRequestWWWModule.dll b/CRIAOrgy/1.4/Assemblies/UnityEngine.UnityWebRequestWWWModule.dll new file mode 100644 index 0000000..b8b8314 Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/UnityEngine.UnityWebRequestWWWModule.dll differ diff --git a/CRIAOrgy/1.4/Assemblies/UnityEngine.VFXModule.dll b/CRIAOrgy/1.4/Assemblies/UnityEngine.VFXModule.dll new file mode 100644 index 0000000..0895120 Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/UnityEngine.VFXModule.dll differ diff --git a/CRIAOrgy/1.4/Assemblies/UnityEngine.VRModule.dll b/CRIAOrgy/1.4/Assemblies/UnityEngine.VRModule.dll new file mode 100644 index 0000000..ea9d6fe Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/UnityEngine.VRModule.dll differ diff --git a/CRIAOrgy/1.4/Assemblies/UnityEngine.VehiclesModule.dll b/CRIAOrgy/1.4/Assemblies/UnityEngine.VehiclesModule.dll new file mode 100644 index 0000000..f7c1085 Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/UnityEngine.VehiclesModule.dll differ diff --git a/CRIAOrgy/1.4/Assemblies/UnityEngine.VideoModule.dll b/CRIAOrgy/1.4/Assemblies/UnityEngine.VideoModule.dll new file mode 100644 index 0000000..92c9898 Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/UnityEngine.VideoModule.dll differ diff --git a/CRIAOrgy/1.4/Assemblies/UnityEngine.WindModule.dll b/CRIAOrgy/1.4/Assemblies/UnityEngine.WindModule.dll new file mode 100644 index 0000000..8ac2232 Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/UnityEngine.WindModule.dll differ diff --git a/CRIAOrgy/1.4/Assemblies/UnityEngine.XRModule.dll b/CRIAOrgy/1.4/Assemblies/UnityEngine.XRModule.dll new file mode 100644 index 0000000..a58bf6a Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/UnityEngine.XRModule.dll differ diff --git a/CRIAOrgy/1.4/Assemblies/UnityEngine.dll b/CRIAOrgy/1.4/Assemblies/UnityEngine.dll new file mode 100644 index 0000000..d45693c Binary files /dev/null and b/CRIAOrgy/1.4/Assemblies/UnityEngine.dll differ diff --git a/CRIAOrgy/CRIAOrgy.csproj b/CRIAOrgy/CRIAOrgy.csproj index 5d52a29..e08ba10 100644 --- a/CRIAOrgy/CRIAOrgy.csproj +++ b/CRIAOrgy/CRIAOrgy.csproj @@ -9,15 +9,16 @@ Properties CRIAOrgy CRIAOrgy - v4.7.2 + v4.8 512 true + false none false - Assemblies\ + 1.4\Assemblies\ DEBUG;TRACE prompt 4 @@ -33,20 +34,17 @@ - ..\..\..\..\..\workshop\content\294100\2009463077\Current\Assemblies\0Harmony.dll - False + ..\..\..\..\..\workshop\content\294100\839005762\1.4\Assemblies\0Harmony.dll ..\..\..\RimWorldWin64_Data\Managed\Assembly-CSharp.dll False - - ..\..\..\..\..\workshop\content\294100\818773962\v1.3\Assemblies\HugsLib.dll - False + + ..\..\rjw-mc\1.3\Assemblies\Milk.dll - ..\..\rjw\1.3\Assemblies\RJW.dll - False + ..\..\rjw\1.4\Assemblies\RJW.dll @@ -58,11 +56,9 @@ ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.dll - False ..\..\..\RimWorldWin64_Data\Managed\UnityEngine.CoreModule.dll - False @@ -73,8 +69,6 @@ - - - + \ No newline at end of file diff --git a/LoadFolders.xml b/LoadFolders.xml index 7e5931b..f003119 100644 --- a/LoadFolders.xml +++ b/LoadFolders.xml @@ -9,4 +9,13 @@
  • CRIAOrgy
  • CRIAOrgy/1.3
  • + +
  • /
  • +
  • 1.4
  • +
  • CRIALactation
  • +
  • CRIALactation/1.4
  • + +
  • CRIAOrgy
  • +
  • CRIAOrgy/1.4
  • +