diff --git a/Libs/Assembly-CSharp_publicized.dll b/Libs/Assembly-CSharp_publicized.dll
new file mode 100644
index 0000000..8486c97
Binary files /dev/null and b/Libs/Assembly-CSharp_publicized.dll differ
diff --git a/Libs/SRML.Editor.dll b/Libs/SRML.Editor.dll
new file mode 100644
index 0000000..ceca19f
Binary files /dev/null and b/Libs/SRML.Editor.dll differ
diff --git a/Libs/SRML.dll b/Libs/SRML.dll
new file mode 100644
index 0000000..7efefd3
Binary files /dev/null and b/Libs/SRML.dll differ
diff --git a/Libs/SRML.xml b/Libs/SRML.xml
new file mode 100644
index 0000000..6382d6c
--- /dev/null
+++ b/Libs/SRML.xml
@@ -0,0 +1,3810 @@
+
+
+
+ SRML
+
+
+
+
+ A command to add a user defined button to the command menu
+
+
+
+
+ A command to clear the console
+
+
+
+
+ A command that dumps stuff to dump files
+
+
+
+
+ A command to edit a user defined button
+
+
+
+
+ A command to display all commands
+
+
+
+
+ A command to display all mods
+
+
+
+
+ A command to reload the mods
+
+
+
+
+ A command to remove a user defined button from the command menu
+
+
+
+
+ Controls the in-game console
+
+
+
+
+ The event that triggers when the Reload Command is called
+
+
+
+
+ Initializes the console
+
+
+
+
+ Registers a new command into the console
+
+ Command to register
+ True if registered succesfully, false otherwise
+
+
+
+ Registers a new console button
+
+ The id of the button
+ Button to register
+ True if registered succesfully, false otherwise
+
+
+
+ Registers a new dump action for the dump command
+
+ The id to use for the dump command argument
+ The dump action to run
+ True if registered succesfully, false otherwise
+
+
+
+ Registers a command catcher which allows commands to be processed and their execution controlled by outside methods
+
+ The method to catch the commands
+
+
+
+ Logs a info message
+
+ Message to log
+ Should log to file?
+
+
+
+ Logs a success message
+
+ Message to log
+ Should log to file?
+
+
+
+ Logs a warning message
+
+ Message to log
+ Should log to file?
+
+
+
+ Logs an error message
+
+ Message to log
+ Should log to file?
+
+
+
+ Binds user commands to the console command menu
+
+
+
+
+ Reads all bindings
+
+
+
+
+ Registers a new bind
+
+ The id of the button
+ The text to show on the button
+ The command to execute
+
+
+
+ Removes a bind
+
+ The id of the bind to remove
+ True if the bind got removed, false otherwise
+
+
+
+ Removes all binds
+
+
+
+
+ Gets all the binds registered
+
+
+
+
+ A button for the console menu
+
+
+
+
+ Text to display on the button
+
+
+
+
+ Command to execute when the button is pressed
+
+
+
+
+ Creates a new console button button
+
+ Text to display on the button
+ Command to execute when the button is pressed
+
+
+
+ Base class for all console commands
+
+
+
+
+ The ID of this command (Always lowercase)
+
+
+
+
+ The usage info of this command
+
+
+
+
+ The description of this command
+
+
+
+
+ The extended description of this command, with a description of each argument to
+ display when you use help command on this command (Multiline is supported)
+
+
+
+
+ Executes the command
+
+ The arguments passed in the console (null if no arguments are provided)
+ True if it executed, false otherwise
+
+
+
+ Gets the auto complete list (word filter is done by the system)
+
+ The index of the argument in the command string
+ The text of the argument
+ The list of auto complete options
+
+
+
+ Gets the auto complete list (word filter is done by the system)
+
+ The index of the argument in the command string
+ A list of inputted arguments
+ The list of auto complete options
+
+
+
+ The arguments are out of bounds (either too many or too little)
+
+ Amount of arguments
+ Minimun amount
+ Maximun amount
+ True if arguments are out of bounds, false otherwise
+
+
+
+ Draws the window for the in-game console
+
+
+
+
+ Attachs the window to a scene
+
+
+
+
+ The logger for the log file
+
+
+
+
+ Initializes the file logger (run this before Console.Init)
+
+
+
+
+ Logs a info message
+
+ Message to log
+
+
+
+ Logs a warning message
+
+ Message to log
+
+
+
+ Logs an error message
+
+ Message to log
+
+
+
+ Allows adding values to any Enum
+
+
+
+
+ Add a new enum value to the given with the first free value
+
+ Type of enum to add the value to
+ Name of the new enum value
+ The new enum value
+
+
+
+ Add a new enum value to the given with the first free value
+
+ Type of enum to add the value to
+ Name of the new enum value
+ The new enum value
+
+
+
+ Add a new value to the given
+
+ Enum to add the new value to
+ Value to add to the enum
+ The name of the new value
+
+
+
+ Add a new value to the given
+
+ Enum to add the new value to
+ Value to add to the enum
+ The name of the new value
+
+
+
+ Get first undefined value in an enum
+
+
+ The first undefined enum value
+
+
+
+ Get first undefined value in an enum
+
+
+ The first undefined enum value
+
+
+
+ Serializable table that maps enum values from placeholder numerical values to their string counterparts
+ Used to assure that enum values map properly between game loads, even if registration order changes
+ Mapped values are always negative
+
+
+
+
+ Get the next free value for the given enumType
+
+ The enum type
+ The next free value
+
+
+
+ Generate a translation table for a list of enumValues
+
+ List of enum values to translate
+
+
+
+ Replace missing enum values with default values, or remove them all together
+
+
+
+
+ Translate an enum value
+
+ Original enum value
+ Translated integer
+
+
+
+ Register an EnumFixer that allows for objects of type to have their enum values processed by an enumtranslator
+
+
+
+
+
+
+ Fix enum values in an object using the registered EnumFixer
+
+ the to use for translating
+ Whether to translate TO or FROM the translated form
+ Object to fix
+
+
+
+ Class used to generate an error message
+
+
+
+
+ Checks if a path exists and creates it if it doesn't
+
+ Path to be checked
+ returns the original path argument
+
+
+
+ When called from a mod, gets the base path of that mod
+
+ The base path of the current executing mod
+
+
+
+ Gets a mods config path
+
+ The mod whose config path is needed
+ The config path
+
+
+
+ Gets the current mods config path
+
+ The config path
+
+
+
+ Utility class to help manage the main SRML harmony instance
+
+
+
+
+ Utilities for communication between mods
+
+
+
+
+ Called before GameContext.Awake()
+
+
+
+
+ Called before GameContext.Start()
+
+
+
+
+ Called after Load
+
+
+
+
+ Called before
+ Used to register things such as enum values, and to do Harmony patching
+
+
+
+
+ Called before
+ Used to register things that require a loaded GameContext
+
+
+
+
+ Called after every mod's Load has finished (not a registry step)
+ Used for editing existing assets in the game
+
+
+
+
+ Register a modded achievement into the registry.
+
+ The id of the achievement to register.
+ The tracker to track achievement progress.
+ The tier the achievement goes into.
+
+
+
+ Register an achievement tier into the registry.
+
+ The id of the tier.
+ The icon to be displayed in the achievement UI.
+
+
+
+ Check if an achievement is modded.
+
+ The id of the achievement to check.
+ True if achievement id belongs to a modded achievement, otherwise false.
+
+
+
+ Tiers for an achievement to be put into.
+
+
+
+
+ Register an ammo prefab to allow it to be put in a player's ammos (use )
+
+ to register the prefab to
+
+
+
+
+ Allow an to be put into a players inventory
+
+ Which inventory to allow the into
+ The to allow
+
+
+
+ Allow an Identifiable.Id to be put into a inventory
+
+
+
+
+
+
+ Allow an Identifiable to be put into the Refinery
+
+
+
+
+
+ Creates a and registers it into the enum
+
+
+
+
+
+
+
+
+ Creates a and registers it into the enum
+
+
+
+
+
+
+
+
+ Registers a
+
+
+
+
+
+ See if a is modded
+
+
+ True if given is from a mod
+
+
+
+ See if a is modded
+
+
+ True if given is from a mod
+
+
+
+ Registers an offset for a fashion.
+
+ The of the fashion to offset.
+ How far the fashion gets offset.
+ The condition that the fashion gets offset in.
+
+
+
+ Registers a slot for a fashion to be placed in.
+
+ The that belongs to the slot.
+ The hierarchal path to the bone.
+ The that the slot attaches to.
+
+
+
+ Adds an to a .
+
+ The to add to.
+ The to be added.
+
+
+
+ Registers a range of s into a .
+
+ The to add to.
+ The s to be added.
+
+
+
+ Registers a range of s into a .
+
+ The to add to.
+ The s to be added.
+
+
+
+ Registers a range of s into a .
+
+ The s to be added.
+
+
+
+ Registers a range of s into a .
+
+ The s to be added.
+
+
+
+ Removes an from a .
+
+ The to be removed from.
+ The to be removed.
+
+
+
+ Removes an from a .
+
+ The to be removed.
+ The to be removed from.
+
+
+
+ Adds an to a .
+
+ The to be added.
+ The to add to.
+
+
+
+ Automatically adds an to a .
+
+ The to be added.
+
+
+
+ Registers a rule for what to register a into.
+
+ The condition that the is registered into the
+ The to register an into.
+
+
+
+ Adds a rank into the 7Zee Rewards catalogue. If the rank already exists, then combine with the pre-existing one.
+
+ The level of the rank.
+ How much it costs to purchase the rank.
+ The rewards for the rank.
+ The banner to show behind the rank name. If null, then it will set to the highest rank's banner.
+
+
+
+ Adds a reward to a rank.
+
+ The rank to add a reward to.
+ The to add.
+
+
+
+ A special way to register rewards with a unique translation key.
+
+
+
+
+ Registers a region into the .
+
+ The of the region.
+ The bounds and values of the region.
+
+
+
+ Adds a zone into a region.
+
+ The to be added.
+ The of the region to add to.
+
+
+
+ Class for handling string ID's for the save system
+
+
+
+
+ Class allowing for the addition of arbitrary data to Actors, similar to Minecraft's NBT system
+
+
+
+
+ Instantiate an an Actor with the given data
+
+
+
+
+
+
+
+
+
+
+ A participant of the data system
+
+
+
+
+ A participant of the data system. When on a slime, if the slime transforms, it will copy to the resulting object.
+
+
+
+
+ Register a serializable
+
+ The actor model to register
+ The mod specific integer ID that the save system will use to refer to this
+
+
+
+ Register a serializable
+
+ Gadget model to register
+ The mod specific integer ID that the save system will use to refer to this
+
+
+
+ Register a serializable
+
+ LandPlot model to register
+ The mod specific integer ID that the save system will use to refer to this
+
+
+
+ Register a that will take part in the extended data system
+
+ Type of the participant to register
+
+
+
+ Allows an to go onto a gordo snare.
+
+ The to register.
+
+
+ if secret styles is installed, otherwise .
+
+
+
+ Register a secret style in a
+
+ Slime definition to register the secret style for
+ Secret style to register
+
+
+
+ Registers a targeter.
+
+ The condition in which the targeter is used.
+ A function getting the name of the targeted object, with the first bundle being the UI bundle, and the second being the pedia bundle.
+ A function getting the description of the targeted object, with the first bundle being the UI bundle, and the second being the pedia bundle.
+
+
+
+ Combines two keys' resulting translations.
+
+ The bundle containing the keys.
+ The key to be added to.
+ The key to be added.
+ The composed description.
+
+
+
+ Composes a type description translation.
+
+ The bundle containing the type key.
+ The key belonging to the type's translation.
+
+
+
+
+ Composes a diet description translation.
+
+ The bundle containing the diet key.
+ The key belonging to the diet's translation.
+
+
+
+ Create a new instance of an IdHandler
+
+
+
+
+
+
+
+ Register an as a drone target.
+
+
+
+
+
+ Registers a rancher.
+
+
+
+
+
+ Registers a rancher's id
+
+
+
+
+
+ Registers an offer id
+
+
+
+
+
+ Registers a category for exchange requests/rewards
+
+ The category to register
+ The ids in the category
+
+
+
+ Registers an item to be unlocked in a category
+
+ The to be unlocked.
+ The progress required to unlock it
+ The value used in the offer generator for count
+
+
+
+ Registers an item that's automatically unlocked in a category
+
+ The to be unlocked.
+ The value used in the offer generator for count
+
+
+
+ Checks if a rancher or offer ID is modded.
+
+ The ID to check.
+ True if the ID belongs to a mod, otherwise false.
+
+
+
+ Checks if a rancher is modded.
+
+ The rancher to check.
+ True if the rancher belongs to a mod, otherwise false.
+
+
+
+ Checks if a category is modded.
+
+ The category to check.
+ True if the category belongs to a mod, otherwise false.
+
+
+
+ Creates a .
+
+ What value is assigned to the .
+ The name of the .
+ The created .
+ Throws if ran outside of PreLoad
+
+
+
+ Check if a belongs to a modded gadget.
+
+ The to check.
+ True if belongs to a modded gadget, otherwise false.
+
+
+
+ Associates an with a
+
+ The to associate.
+ The to associate
+
+
+
+ Registers a locker for a blueprint.
+
+ The of the blueprint.
+ The locker for the blueprint.
+
+
+
+ Register a blueprint.
+
+ The of the blueprint.
+
+
+
+ Register a blueprint that's automatically available.
+
+ The of the blueprint.
+
+
+
+ Manually set the of the
+
+
+
+
+
+
+ Remove all instances of an from every class in
+
+
+
+
+
+ Puts a into one of the vanilla categories based on its name prefix (see )
+ WARNING: Will not categorize decorations properly!
+
+
+
+
+
+ Put an into one of the vanilla categories
+
+
+
+
+
+
+ Creates an .
+
+ What value is assigned to the .
+ The name of the .
+ The created .
+ Throws if ran outside of PreLoad
+
+
+
+ Creates an .
+
+ What value is assigned to the .
+ The name of the .
+ If the should automatically be categorized into 's classes.
+ The created .
+ Throws if ran outside of PreLoad
+
+
+
+ Manually set the of the
+
+
+
+
+
+
+ Remove all instances of an from every class in
+
+
+
+
+
+
+ Check if an was registered by a mod
+
+
+ True if the was registered by a mod, otherwise false.
+
+
+
+ Gets every registered by a mod.
+
+ The ID of the mod to check.
+ All s reigstered by a mod.
+
+
+
+ Registers a rule for an id prefix to link to
+
+ The prefix for the id to check for.
+ The rule that the specified prefix links to.
+
+
+
+ Registers a rule for an id suffix to link to
+
+ The suffix for the id to check for.
+ The rule that the specified prefix links to.
+
+
+
+ Puts an into one of the vanilla categories based on its name (see )
+
+
+
+
+
+ Put an into one of the vanilla categories
+
+
+
+
+
+
+ Register a keybind into the options UI.
+
+ The action associated with the keybind.
+
+
+
+ Creates and registers a .
+
+ The name of the action.
+ The created action
+
+
+
+ Creates and registers a , then registers it into the options UI.
+
+ The name of the action.
+ The created action
+
+
+
+ Creates and registers a , adds it into the options UI, and adds a translation.
+
+ The name of the action.
+ The translated name of the action.
+ The created action
+
+
+
+ Check if an action is modded.
+
+ The action to check.
+ True if action belongs to a mod, otherwise false.
+
+
+
+ Register all 's in a Type
+
+ Type holding the 's
+
+
+
+ Creates a .
+
+ What value is assigned to the .
+ The name of the .
+ The created .
+ Throws if ran outside of PreLoad
+
+
+
+ Check if an was registered by a mod
+
+
+ True if the was registered by a mod, otherwise false.
+
+
+
+ Registers a land plot.
+
+ The land plot to register.
+
+
+
+ Creates a .
+
+ What value is assigned to the .
+ The name of the .
+ The created .
+ Throws if ran outside of PreLoad
+
+
+
+ Registers an land plot upgrade.
+
+ The type of land plot to register it to.
+ The upgrade to register.
+
+
+
+ Registers a to a land plot.
+
+ The to register.
+ The to register the to
+ Throws if the is already registered.
+
+
+
+ Sets the callback of the .
+
+ The callback
+
+
+
+
+ Sets the from translation.
+
+ The translated text.
+
+
+
+
+ Sets the body translation.
+
+ The translated text.
+
+
+
+ Sets the subject translation.
+
+ The translated text.
+
+
+
+ Registers a .
+
+ The to register.
+ The registered
+
+
+
+ Registers a .
+
+ The key of the to register.
+ The registered
+
+
+
+ Gets the default renderer for a Slimepedia entry.
+
+ The setting to get the renderer from.
+ The default renderer for the specified setting.
+
+
+
+ Creates a .
+
+ What value is assigned to the .
+ The name of the .
+ The created .
+ Throws if ran outside of PreLoad
+
+
+
+ Registers a tab for the Slimepedia.
+
+ The tab to register
+
+
+
+ Registers a into the Slimepedia.
+
+ The to register.
+
+
+
+ Creates and registers a .
+
+ The belonging to the entry.
+ The icon belonging to the entry.
+
+
+
+ Registers an entry renderer for the Slimepedia.
+
+ The assigned to the entry.
+ The renderer the Slimepedia entry should use.
+
+
+
+ Registers an entry to already be unlocked in a new game
+
+ The that belongs to the entry.
+
+
+
+ Creates a link between an and a .
+
+ The entry mapping both values.
+
+
+
+ Creates a link between an and a .
+
+ The to link.
+ The to link.
+
+
+
+ Sorts a Slimepedia category based on a rule.
+
+ The Slimepedia category to sort.
+ The rules to sort it.
+
+
+
+ Assigns a to a Slimepedia category.
+
+ The to assign.
+ The Slimepedia category to assign the to.
+
+
+
+ Registers an event to be run when a awakes.
+
+ The event to be ran.
+
+
+
+ Registers a link between a plant plot and an .
+
+ The entry of the link.
+
+
+
+ Registers a link between a plant plot and an , which only is used if a condition is met.
+
+ The condition that the link is established.
+ The entry of the link.
+
+
+
+ Predicate for choosing purchasable ui's
+
+ The type of the Purchasable UI
+ The UI instance
+
+
+
+
+ Creates purchasables on demand
+
+ The that the will be added to
+
+
+
+
+ Creates a purchasable on demand
+
+
+ The UI that the will be added to
+
+
+
+
+ Delegate for arbitarily manipulating a list of purchasables
+
+
+
+
+
+
+
+ Delegate for arbitarily manipulating a list of purchasables
+
+
+
+
+ Register a to all UI's pointed to by the
+
+ The prediate for filtering the Purchasable UI
+ The creator of the new purchasable
+
+
+
+ Register a compararer to sort a list of purchasables
+
+ Filter for PurchasableUI's
+ Comparer to use when sorting
+
+
+
+ Register a compararer to sort a list of purchasables
+
+ The type of the UI
+ Comparer used for sorting
+
+
+
+ Registers a plort entry into the Plort Market.
+
+ The plort's market entry.
+
+
+
+ Creates and registers a plort entry into the Plort Market.
+
+ The belonging to the plort.
+ The progress required to show the plort as unlocked.
+
+
+
+ Creates and registers a plort entry into the Plort Market that is automatically unlocked.
+
+ The belonging to the plort.
+
+
+
+ Registers an economy entry into the Plort Market.
+
+ The entry to register.
+
+
+
+ Creates and registers an economy entry into the Plort Market.
+
+ The belonging to the plort.
+ The base value of the plort.
+ How many plorts needed to saturate the market (cut the price in half).
+
+
+
+ Creates and registers an economy entry into the Plort Market.
+
+ The belonging to the plort.
+ The base value of the plort.
+ How many plorts needed to saturate the market (cut the price in half).
+ Throws if ran in PreLoad.
+
+
+
+ Creates and registers a plort entry, as well as an economy entry into the Plort Market.
+
+ The belonging to the plort.
+ The base value of the plort.
+ How many plorts needed to saturate the market (cut the price in half).
+
+
+
+ Register an Identifiable Prefab into the
+
+ The prefab to register.
+
+
+
+ Register an Identifiable Prefab into the
+
+ The belonging to the prefab to register.
+
+
+
+ Register into the
+
+
+
+
+
+ Register a landplot prefab into the
+
+ The prefab to register
+
+
+
+ Register a gadget entry to the
+
+
+
+
+
+ Register a vacuumable item into the
+
+ Id of the vacuumable item
+ Color of the background of the inventory slot
+ Icon that will be used for the item in inventory
+
+
+
+ Register into the
+
+ Upgrade Entry to register
+
+
+
+ Create and register an upgrade entry
+
+ Upgrade ID
+ Icon that will show up in the upgrade shop
+ The cost of the upgrade
+
+
+
+ Register a into the
+
+
+
+
+
+ Register a gordo prefab into the
+
+
+
+
+
+ Register into the
+
+ Liquid to register
+
+
+
+ Register into the
+
+ Entry to register
+
+
+
+ Register a toy (note: does not register the identifiable itself, only the toy, do that separately)
+
+ of the toy
+ Icon for the toy in the toy store
+ How much the toy costs in the toy store
+
+
+
+
+ Register a slime definition in the database
+
+ Slime definition to register
+
+
+
+ Register a slime definition in the database
+
+ Slime definition to register
+ Whether or not to refresh the EatMaps of the slime and its bases.
+
+
+
+ Registers a .
+
+ The that the is assigned to.
+ The to be registered.
+
+
+
+ Combines two s into a largo .
+
+ The base .
+ The addon .
+ The to register the into.
+ The properties controlling the way the s are combined.
+ The stripe shader to be used, if any.
+ The created .
+
+
+
+ Creates a largo from two base s.
+
+ The belonging to the resulting largo.
+ The belonging to the base slime.
+ The belonging to the addon slime.
+ The properties controlling the way the s are combined.
+ The created .
+
+
+
+ Combines the s of the bases of a into one .
+
+ The largo's .
+ The created .
+
+
+
+ Combines two slimes into a largo.
+
+ The belonging to the resulting largo.
+ The belonging to the base slime.
+ The belonging to the addon slime.
+ The properties controlling the way the slimes are combined.
+ The properties controlling the base Secret Style and the addon normal s are combined.
+ The properties controlling the base normal and the addon Secret Style s are combined.
+ The properties controlling the base Secret Style and the addon Secret Style s are combined.
+
+
+
+ Combines two slimes into a largo.
+
+ The belonging to the resulting largo.
+ The belonging to the base slime.
+ The belonging to the addon slime.
+ The properties controlling the way the slimes are combined.
+ The properties controlling the base Secret Style and the addon normal s are combined.
+ The properties controlling the base normal and the addon Secret Style s are combined.
+ The properties controlling the base Secret Style and the addon Secret Style s are combined.
+ The of the created largo.
+ The of the created largo.
+ The of the created largo.
+
+
+
+ Takes an and formats it into a largo name.
+
+ The belonging to the largo.
+ The resulting name.
+
+
+
+ Creates a .
+
+ What value is assigned to the .
+ The name of the .
+ The created .
+ Throws if ran outside of PreLoad
+
+
+
+ Represents a template game object, used to contain templates to turn into
+ Runtime Prefabs
+
+
+
+
+ A template to create new animals
+
+
+
+
+ Template to create new animals
+
+ The name of the object (prefixes are recommended, but not needed)
+ The Identifiable ID for this animal
+ The model's mesh for this animal
+ The materials that compose this animal's model
+ The animator used by the animal
+ Is this animal a child?
+
+
+
+ Sets the reproduction objects (not needed for childs or males)
+
+ The male mate of this female
+ The resulting child
+
+
+
+ Sets the elder version of this (not needed for childs)
+
+ The elder version
+
+
+
+ Sets the movement component to a new one (Default is the Chicken Movement)
+
+ New component to use
+
+
+
+ Sets the vacuumable size
+
+ The vac size to set
+
+
+
+ Sets the reproduction infos (not needed for childs or males)
+
+ Min. Reproduction hours
+ Max. Reproduction hours
+
+
+
+ Sets the bones and skinned mesh of this animal (default are the ones from the Chicken/Hen)
+ The skinned mesh would be an object like mesh_body1 of the Hen's Prefab
+ The bones would be an object like root of the Hen's Prefab
+
+ The new skinned mesh to use for the animal
+ The new bones to use for the animal
+
+
+
+ Sets the child info (only needed for childs)
+
+ The number of hours before becoming an adult
+ The number of hours before hatching the egg
+ The egg object
+
+
+
+ Sets the translation for this animal's name
+
+ The translated name
+
+
+
+ Creates the object of the template (To get the prefab version use .ToPrefab() after calling this)
+
+
+
+
+ A template to create new Craft Resources
+
+
+
+
+ Template to create new Craft Resources
+
+ The name of the object (prefixes are recommend, but not needed)
+ The Identifiable ID for this resource
+ The pedia ID for this resource
+ The model's mesh for this resource
+ The materials that compose this resource's model
+
+
+
+ Sets the vacuumable size
+
+ The vac size to set
+
+
+
+ Sets the transform values for the model
+
+ New values to set
+
+
+
+ Sets the collider radius for this craft resource (Use this to ajust the collider to the model)
+
+ The radius of the collider
+
+
+
+ Sets the scale for the Delaunch Trigger (do not change if you don't know what you are doing)
+
+ The new scale to set
+
+
+
+ Sets the translation for this resource's name
+
+ The translated name
+
+
+
+ Creates the object of the template (To get the prefab version use .ToPrefab() after calling this)
+
+
+
+
+ A template to create new crates
+
+
+
+
+ Template to create new crates
+
+ The name of the object (prefixes are recommended, but not needed)
+ The Identifiable ID for this crate
+ The materials that compose this crate's model
+
+
+
+ Sets the vacuumable size
+
+ The vac size to set
+
+
+
+ Sets the spawn options for the crate
+
+ List of options
+
+
+
+ Sets the info for spawning items
+
+ The min amount of things to spawn
+ The max amount of things to spawn
+
+
+
+ Creates the object of the template (To get the prefab version use .ToPrefab() after calling this)
+
+
+
+
+ A template to create new fashion attachments (the part that gets attached to the object)
+
+
+
+
+ Template to create new fashion attachments
+
+ The name of the object (prefixes are recommend, but not needed)
+ The Identifiable ID for this fashion attachment
+ The model's mesh for this fashion attachment
+ The materials that compose this fashion attachment's model
+
+
+
+ Sets the transform values for the model
+
+ New values to set
+
+
+
+ Adds a new layer
+
+ The mesh to add to the layer
+ The materials to add to the layer
+
+
+
+ Creates the object of the template (To get the prefab version use .ToPrefab() after calling this)
+
+
+
+
+ A template to create new fashions (the actual fashion not the pod)
+
+
+
+
+ Template to create new fashions
+
+ The name of the object (prefixes are recommended, but not needed)
+ The Identifiable ID for this fashion
+ The prefab to attach to the target
+ The icon for this fashion
+ The slot it occupied when attached
+
+
+
+ Sets the vacuumable size
+
+ The vac size to set
+
+
+
+ Sets the translation for this fashion's name
+
+ The translated name
+
+
+
+ Creates the object of the template (To get the prefab version use .ToPrefab() after calling this)
+
+
+
+
+ A template to create floating decorations like ornaments or echos
+
+
+
+
+ Template to create floating decorations
+
+ The name of the object (prefixes are recommended, but not needed)
+ The Identifiable ID for this decoration
+ The type of decoration
+ The model's mesh for this decoration
+ The materials that compose this decoration's model
+
+
+
+ Sets the vacuumable size
+
+ The vac size to set
+
+
+
+ Sets the clip (For the type ECHO_NOTE)
+
+ The number of clip to set
+
+
+
+ Sets the transform values
+
+ New values to set
+
+
+
+ Sets the color for the material (For the type ECHO or ECHO_NOTE) (only if you want to use the default material for echos and change the color)
+
+ New color to set
+
+
+
+ Sets the translation for this deco's name
+
+ The translated name
+
+
+
+ Creates the object of the template (To get the prefab version use .ToPrefab() after calling this)
+
+
+
+
+ A template to create new foods
+
+
+
+
+ Template to create new foods
+
+ The name of the object (prefixes are recommended, but not needed)
+ The Identifiable ID for this food
+ The pedia ID for this resource
+ The type of food
+ The model's mesh for this food
+ The materials that compose this food's model
+
+
+
+ Sets the vacuumable size
+
+ The vac size to set
+
+
+
+ Sets the info of the resource cycle
+
+ The number of game hours before the food is ready to collect
+ The number of game hours the food stays in place to be riped
+ The number of game hours the food can be eaten
+ The number of game hours the food takes to rot
+
+
+
+ Sets the rotten material
+
+ The rotten material
+
+
+
+ Sets the Audio Cues for the food (Only needed for type CUSTOM)
+
+ The cue triggered when the food is released from a farmable zone
+ The cue triggered when the food hits something
+
+
+
+ Sets the scale for the Delaunch Trigger (do not change if you don't know what you are doing)
+
+ The new scale to set
+
+
+
+ Sets the scale for the model, only needed if the default doesn't work
+
+ The new scale to set
+
+
+
+ Sets the option to eject the food when mature (only needed if the food is farmable)
+
+ The new state to set
+
+
+
+ Sets the translation for this slime's name
+
+ The translated name
+
+
+
+ Creates the object of the template (To get the prefab version use .ToPrefab() after calling this)
+
+
+
+
+ A template to create new gordos
+
+
+
+
+ Template to create new gordos
+
+ The name of the object (prefixes are recommend, but not needed)
+ The identifiable ID for this gordo
+ The definition of the slime this gordo is based on
+ The materials to use on the model of this gordo
+
+
+
+ Adds a new behaviour to the slime
+
+ The component containing the new behaviour
+
+
+
+ Adds a new behaviour to the slime
+
+ The component containing the new behaviour
+ A list of components containing the new behaviour
+
+
+
+ Sets a new bone structure for the slime (Starting at the Vibrating part)
+
+ The new bone structure as a game object (to add to the prefab)
+
+
+
+ Sets the translation for this gordo's name
+
+ The translated name
+
+
+
+ Creates the object of the template (To get the prefab version use .ToPrefab() after calling this)
+
+
+
+
+ A template to create new liquids
+
+
+
+
+ Template to create new liquids
+
+ The name of the object (prefixes are recommended, but not needed)
+ The Identifiable ID for this liquid
+ The materials that compose this liquid's model
+
+
+
+ Sets the vacuumable size
+
+ The vac size to set
+
+
+
+ Sets the color for the material (only if you want to use the default material for water and change the color)
+ DO NOT USE THIS IF YOU SET A CUSTOM MATERIAL, THIS WILL OVERRIDE THAT MATERIAL
+
+ New color to set
+
+
+
+ Sets the translation for this slime's name
+
+ The translated name
+
+
+
+ Creates the object of the template (To get the prefab version use .ToPrefab() after calling this)
+
+
+
+
+ A template to create new plorts
+
+
+
+
+ Template to create new plorts
+
+ The name of the object (prefixes are recommended, but not needed)
+ The Identifiable ID for this plort
+ The materials that compose this plort's model
+
+
+
+ Sets the vacuumable size
+
+ The vac size to set
+
+
+
+ Sets the translation for this plort's name
+
+ The translated name
+
+
+
+ Sets the scale for the plort
+
+ The scale to set
+
+
+
+ Creates the object of the template (To get the prefab version use .ToPrefab() after calling this)
+
+
+
+
+ A template to create new slimes
+
+
+
+
+ Template to create new slimes
+
+ The name of the object (prefixes are recommend, but not needed)
+ The definition for this slime
+
+
+
+ Sets the vacuumable size
+
+ The vac size to set
+
+
+
+ Sets the eat info
+
+ The min. drive required for the slime to eat
+ How much the drive is reduced once fed
+ How much the agitation is reduced once fed
+ How much the agitation is reduced once fed it's favorite
+
+
+
+ Sets the max. health of this slime
+
+ The max. health to set
+
+
+
+ Sets the possibility of having a feral state
+
+ Can the slime be afected by a feral state
+
+
+
+ Sets the possibility of turning into a glitch if spawned in the Slimeulation
+
+ Can the slime be turned into a glitch inside the Slimeulation
+
+
+
+ Sets the fear profile
+
+ The fear profile to set
+
+
+
+ Sets the starting emotions of this slime
+
+ The initial state for Hunger
+ The initial state for Agitation
+ The initial state for Fear
+
+
+
+ Sets the scale for the Delaunch Trigger (do not change if you don't know what you are doing)
+
+ The new scale to set
+
+
+
+ Adds a new behaviour to the slime
+
+ The component containing the new behaviour
+
+
+
+ Adds a new behaviour to the slime
+
+ The component containing the new behaviour
+ A list of components containing the new behaviour
+
+
+
+ Sets a new bone structure for the slime (Starting at the Appearance part)
+
+ The new bone structure as a game object (to add to the prefab)
+
+
+
+ Sets the translation for this slime's name
+
+ The translated name
+
+
+
+ Creates the object of the template (To get the prefab version use .ToPrefab() after calling this)
+
+
+
+
+ Generates the largos for this slime (use this if you want the slime to be largoable)
+
+ Can the largos from the slime become tarr?
+ Use this to add extra behaviours to the largos
+ A list of all IDs made for the largos created
+
+
+
+ Generates a roaming Gordo Slime for this slime (use this if you want the slime to have a Gordo counter part)
+ Roaming gordos are normal slimes scaled as a gordo and contains almost no behaviours, also it doesnt eat. Use PrefabFunctions to give it
+ behaviours
+
+ The ID for the gordo
+ The slime template for the Roaming Gordo (YOU NEED TO CLASS .Create TO FINISH THE PROCESS)
+
+
+
+ Generates a Gordo Slime for this slime (use this if you want the slime to have a Gordo counter part)
+
+ The ID for the gordo
+ The gordo template for the static gordo (YOU NEED TO CLASS .Create TO FINISH THE PROCESS)
+
+
+
+ Builds the module for this slime
+
+
+
+
+ Builds the definition for this slime
+
+
+
+
+ A template to create new toys
+
+
+
+
+ Template to create new toys
+
+ The name of the object (prefixes are recommended, but not needed)
+ The Identifiable ID for this toy
+ The model's mesh for this toy
+ The materials that compose this toy's model
+ The audio cue when this toy hits something
+
+
+
+ Sets the vacuumable size
+
+ The vac size to set
+
+
+
+ Sets what fashion is required to react with this toy
+
+ The ID of said fashion (NONE to remove the required fashion)
+
+
+
+ Sets the translation for this toy's name
+
+ The translated name
+
+
+
+ Creates the object of the template (To get the prefab version use .ToPrefab() after calling this)
+
+
+
+
+ A template ti create new Tech Activators
+
+
+
+
+ Template to create new Tech Activators
+
+ The name of the object (prefixes are recommended, but not needed)
+ The prefab UI to display
+
+
+
+ Creates the object of the template (To get the prefab version use .ToPrefab() after calling this)
+
+
+
+
+ Interface used to make lists of Mod Prefabs (as lists can't have different generic constructs)
+
+
+
+
+ Simple prefab like class, used to make the structure for templates
+
+
+
+
+ Creates the object of the template (To get the prefab version use .ToPrefab() after calling this)
+
+
+
+
+ Adds a new start action to the pile
+
+ ID of the action (as registered in TemplateActions)
+
+
+
+ Adds a new awake action to the pile
+
+ ID of the action (as registered in TemplateActions)
+
+
+
+ Adds a prefab function (they are executed when ToPrefab is called)
+
+ Action to add to the pile
+
+
+
+ Adds a prefab function (they are executed when ToPrefab is called)
+
+ Actions to add to the pile
+
+
+
+ Sets the translation for the prefab, not all templates implement this, so it might do nothing.
+
+ The translated name
+
+
+
+ Turns this ModPrefab/Template into a runtime prefab
+
+
+
+
+ Returns this prefab as a template
+
+
+
+
+ Returns this prefab as a clone of the template
+
+
+
+
+ A template to create new bush plantables
+
+
+
+
+ Template to create new veggie plantables
+
+ The name of the object (prefixes are recommended, but not needed)
+ Is this plantable for the deluxe version of the garden?
+ The ID of the identifiable spawned by this plantable
+ The spawn resource id for this plantable
+ The list of things to spawn (null to get it from the ID provided)
+
+
+
+ Sets the bonus info
+
+ The min. amount selected from the bonus list
+ The change to select extras
+
+
+
+ Sets the list of bonus spawns
+
+ The list to set
+
+
+
+ Adds a new bonus spawn to the list
+
+ The ID for the spawnable
+
+
+
+ Adds a new bonus spawwn to the list
+
+ The game object of the identifiable to spawn
+
+
+
+ Sets the list of spawns
+
+ The list to set
+
+
+
+ Adds a spawn to the list
+
+ The ID for the spawnable
+
+
+
+ Adds a spawn to the list
+
+ The game object of the identifiable to spawn
+
+
+
+ Sets the tree to be used
+
+ The tree's mesh
+ The materials for that tree
+ The tree's mesh for the collider
+
+
+
+ Sets the tree to be used based on the SpawnResource ID (only works for those already in the game)
+
+ The ID to get the tree from
+
+
+
+ Sets the leaves to be used
+
+ The leaves's mesh
+ The materials for that leaves
+ The leaves's mesh for the collider
+
+
+
+ Sets the leaves to be used based on the SpawnResource ID (only works for those already in the game)
+
+ The ID to get the leaves from
+
+
+
+ Sets the position for the leaves (uses the same for normal and deluxe)
+
+ The new position to set
+
+
+
+ Sets the position for the leaves (uses different ones for normal and deluxe versions)
+
+ The new position to set for normal
+ The new position to set for deluxe
+
+
+
+ Sets the scale for the leaves (uses the same for normal and deluxe)
+
+ The new scale to set
+
+
+
+ Sets the scale for the leaves (uses different ones for normal and deluxe versions)
+
+ The new scale to set for normal
+ The new scale to set for deluxe
+
+
+
+ Sets the scale for the tree (uses the same for normal and deluxe)
+
+ The new scale to set
+
+
+
+ Sets the scale for the tree (uses different ones for normal and deluxe versions)
+
+ The new scale to set for normal
+ The new scale to set for deluxe
+
+
+
+ Sets the spawn info
+
+ Min. number of items to spawn
+ Max. number of items to spawn
+ Min. hours to be ready to spawn
+ Max. hours to be ready to spawn
+ Min. value of nutrients, related to growth rate
+ The number of hours the water lasts in the soil
+
+
+
+ Sets the model of the spawn points (used to display the growth of the items)
+
+ The mesh for the model
+ The materials for the model
+
+
+
+ Sets the spawn joints (the list needs to have 20 for non-deluxe and 34 for deluxe)
+
+ New spawn joints to set
+
+
+
+ Creates the object of the template (To get the prefab version use .ToPrefab() after calling this)
+
+
+
+
+ A template to create new fruit plantables
+
+
+
+
+ Template to create new veggie plantables
+
+ The name of the object (prefixes are recommended, but not needed)
+ Is this plantable for the deluxe version of the garden?
+ The ID of the identifiable spawned by this plantable
+ The spawn resource id for this plantable
+ The list of things to spawn (null to get it from the ID provided)
+
+
+
+ Sets the bonus info
+
+ The min. amount selected from the bonus list
+ The change to select extras
+
+
+
+ Sets the list of bonus spawns
+
+ The list to set
+
+
+
+ Adds a new bonus spawn to the list
+
+ The ID for the spawnable
+
+
+
+ Adds a new bonus spawwn to the list
+
+ The game object of the identifiable to spawn
+
+
+
+ Sets the list of spawns
+
+ The list to set
+
+
+
+ Adds a spawn to the list
+
+ The ID for the spawnable
+
+
+
+ Adds a spawn to the list
+
+ The game object of the identifiable to spawn
+
+
+
+ Sets the tree to be used
+
+ The tree's mesh
+ The materials for that tree
+ The tree's mesh for the collider
+
+
+
+ Sets the tree to be used based on the SpawnResource ID (only works for those already in the game)
+
+ The ID to get the tree from
+
+
+
+ Sets the leaves to be used
+
+ The leaves's mesh
+ The materials for that leaves
+ The leaves's mesh for the collider
+
+
+
+ Sets the leaves to be used based on the SpawnResource ID (only works for those already in the game)
+
+ The ID to get the leaves from
+
+
+
+ Sets the position for the leaves (uses the same for normal and deluxe)
+
+ The new position to set
+
+
+
+ Sets the position for the leaves (uses different ones for normal and deluxe versions)
+
+ The new position to set for normal
+ The new position to set for deluxe
+
+
+
+ Sets the scale for the leaves (uses the same for normal and deluxe)
+
+ The new scale to set
+
+
+
+ Sets the scale for the leaves (uses different ones for normal and deluxe versions)
+
+ The new scale to set for normal
+ The new scale to set for deluxe
+
+
+
+ Sets the scale for the tree (uses the same for normal and deluxe)
+
+ The new scale to set
+
+
+
+ Sets the scale for the tree (uses different ones for normal and deluxe versions)
+
+ The new scale to set for normal
+ The new scale to set for deluxe
+
+
+
+ Sets the spawn info
+
+ Min. number of items to spawn
+ Max. number of items to spawn
+ Min. hours to be ready to spawn
+ Max. hours to be ready to spawn
+ Min. value of nutrients, related to growth rate
+ The number of hours the water lasts in the soil
+
+
+
+ Sets the model of the spawn points (used to display the growth of the items)
+
+ The mesh for the model
+ The materials for the model
+
+
+
+ Sets the spawn joints (the list needs to have 20 for non-deluxe and 34 for deluxe)
+
+ New spawn joints to set
+
+
+
+ Creates the object of the template (To get the prefab version use .ToPrefab() after calling this)
+
+
+
+
+ A template to create new veggie plantables
+
+
+
+
+ Template to create new veggie plantables
+
+ The name of the object (prefixes are recommended, but not needed)
+ Is this plantable for the deluxe version of the garden?
+ The ID of the identifiable spawned by this plantable
+ The spawn resource id for this plantable
+ The list of things to spawn (null to get it from the ID provided)
+
+
+
+ Sets the bonus info
+
+ The min. amount selected from the bonus list
+ The change to select extras
+
+
+
+ Sets the list of bonus spawns
+
+ The list to set
+
+
+
+ Adds a new bonus spawn to the list
+
+ The ID for the spawnable
+
+
+
+ Adds a new bonus spawwn to the list
+
+ The game object of the identifiable to spawn
+
+
+
+ Sets the list of spawns
+
+ The list to set
+
+
+
+ Adds a spawn to the list
+
+ The ID for the spawnable
+
+
+
+ Adds a spawn to the list
+
+ The game object of the identifiable to spawn
+
+
+
+ Sets the sprout to be used (null can also be provided to use the default one)
+
+ The sprout's mesh
+ The material for that sprout
+
+
+
+ Sets the sprout to be used based on the SpawnResource ID (only works for those already in the game)
+
+ The ID to get the sprout from
+
+
+
+ Sets the spawn info
+
+ Min. number of items to spawn
+ Max. number of items to spawn
+ Min. hours to be ready to spawn
+ Max. hours to be ready to spawn
+ Min. value of nutrients, related to growth rate
+ The number of hours the water lasts in the soil
+
+
+
+ Sets the model of the spawn points (used to display the growth of the items)
+
+ The mesh for the model
+ The materials for the model
+
+
+
+ Sets the spawn joints (the list needs to have 20 for non-deluxe and 34 for deluxe)
+
+ New spawn joints to set
+
+
+
+ Creates the object of the template (To get the prefab version use .ToPrefab() after calling this)
+
+
+
+
+ A template to create new plots
+
+
+
+
+ Template to create new plots
+
+ The name of the object (prefixes are recommended, but not needed)
+ The Plot ID for this plot
+
+
+
+ Sets the Activator Transform values
+
+ The position to set
+ The rotation to set
+ The scale to set
+
+
+
+ Sets the Activator Transform values
+
+ The values to set
+
+
+
+ Sets the game object for the UI of this plot
+
+ The game object to set
+
+
+
+ Creates the object of the template (To get the prefab version use .ToPrefab() after calling this)
+
+
+
+
+ A template to create a plot frame (use this if you want to create a custom frame by adding prefab functions to it)
+
+
+
+
+ Template to create a plot frame
+
+ The name of the object
+
+
+
+ Creates the object of the template (To get the prefab version use .ToPrefab() after calling this)
+
+
+
+
+ Interface used to make lists of PlotUpgradeTemplate (as lists can't have different generic constructs)
+
+
+
+
+ A template to create a plot upgrade
+ This template is a bit more complex than the others, it's structure is entirely built by you. It only exists for covinience when adding to custom plots.
+
+
+
+
+ Template to create a plot upgrade
+
+ The name of the object
+ The upgrade for this land plot
+ The upgrader component to add to the main object
+ The action to setup the component after creation
+
+
+
+ Creates the object of the template (To get the prefab version use .ToPrefab() after calling this)
+
+
+
+
+ Creates the object of the template (To get the prefab version use .ToPrefab() after calling this)
+
+ The action to construct the template
+
+
+
+ A template to create new activator UIs
+
+
+
+
+ Template to create new activator UIs
+
+ The name of the object (prefixes are recommended, but not needed)
+ The UI component to add
+
+
+
+ Creates the object of the template (To get the prefab version use .ToPrefab() after calling this)
+
+
+
+
+ Registers a toy into the first group of toys.
+
+ The belonging to the toy.
+
+
+
+ Registers a toy into the second group of toys.
+
+ The belonging to the toy.
+
+
+
+ Localization
+
+
+
+
+ Add a plaintext translation for a localization key
+
+ Key bundle the localization key is located in
+ The localization key
+ The plain text translation
+
+
+
+ Add a plaintext translation for a localization key in the 'pedia' bundle
+
+ The localization key
+ The plain text translation
+
+
+
+ Add a plaintext translation for a localization key in the 'actor' bundle
+
+ The localization key
+ The plain text translation
+
+
+
+ Add a plaintext translation for a localization key in the 'ui' bundle
+
+ The localization key
+ The plain text translation
+
+
+
+ Add a plaintext translation for a localization key in the 'achieve' bundle
+
+ The localization key
+ The plain text translation
+
+
+
+ Add a plaintext translation for a localization key in the 'exchange' bundle
+
+ The localization key
+ The plain text translation
+
+
+
+ Add a plaintext translation for a localization key in the 'global' bundle
+
+ The localization key
+ The plain text translation
+
+
+
+ Add a plaintext translation for a localization key in the 'mail' bundle
+
+ The localization key
+ The plain text translation
+
+
+
+ Add a plaintext translation for a localization key in the 'tutorial' bundle
+
+ The localization key
+ The plain text translation
+
+
+
+ Add a plaintext translation for localization for SRML error messages
+
+ The language to be translated to
+ The plain text translation for the text saying it's an error
+ The plain text translation for the text saying mod-loading is aborting
+
+
+
+ Creates a .
+
+ What value is assigned to the .
+ The name of the .
+ The created .
+ Throws if ran outside of PreLoad
+
+
+
+ Check if a belongs to a modded upgrade.
+
+ The to check.
+ True if belongs to a modded upgrade, otherwise false.
+
+
+
+ Registers a callback to be called when an upgrade is bought.
+
+ The that calls the callback.
+ The callback to be called.
+
+
+
+ Registers an upgrade locker.
+
+ The to be locked.
+ The locker locking the .
+
+
+
+ Registers an upgrade that's automatically unlocked.
+
+ The to be unlocked.
+
+
+
+ An utility class to help with Enums
+
+
+
+
+ Parses an enum in a easier way
+
+ Type of the enum
+ Value to parse
+ The parsed enum on success, null on failure.
+
+
+
+ Parses an enum in a easier way
+
+ Type of the enum
+ Value to parse
+ true to ignore case; false to regard case.
+ The parsed enum on success, null on failure.
+
+
+
+ Converts int to enum
+
+ Type of the enum
+ Int to convert to enum
+ The enum equal to the int
+
+
+
+ Gets all names in an enum
+
+ Type of the enum
+ The list of names in the enum
+
+
+
+ Gets all enum values in an enum
+
+ Type of the enum
+ The list of all values in the enum
+
+
+
+ Checks if an enum is defined.
+
+ Type of the enum
+ Value to check
+ true if defined, false if not.
+
+
+
+ Checks all names in an enum to see if what you need exists.
+
+ Type of the enum
+ Value to find
+ true if found, false if not.
+
+
+
+ Parses an enum in a easier way
+
+ Type of the enum
+ Value to parse
+ What to return if the parse fails.
+ The parsed enum on success, on failure.
+
+
+
+ Parses an enum in a easier way
+
+ Type of the enum
+ Value to parse
+ true to ignore case; false to regard case.
+ What to return if the parse fails.
+ The parsed enum on success, on failure.
+
+
+
+ Converts int to enum
+
+ Type of the enum
+ Int to convert to enum
+ The enum equal to the int
+
+
+
+ Gets all names in an enum
+
+ Type of the enum
+ The list of names in the enum
+
+
+
+ Gets all enum values in an enum
+
+ Type of the enum
+ What to return if the parse fails.
+ The list of all values in the enum
+
+
+
+ Checks if an enum is defined.
+
+ Type of the enum
+ Value to check
+ true if defined, false if not.
+
+
+
+ Checks all names in an enum to see if what you need exists.
+
+ Type of the enum
+ Value to find
+ true if found, false if not.
+
+
+
+ A basic mod data class that is safe to share between mods (no logic in it)
+
+
+
+
+ Data structure to simplify versioning and the comparing of versions
+
+
+
+
+ Actual internal implementation of a mod
+
+
+
+
+ Mods associated SRModInfo object
+
+
+
+
+ Path of the mod (usually the directory where the core modinfo.json is located)
+
+
+
+
+ Gets the current executing mod as an SRMod instance
+
+ The current executing mod
+
+
+
+ Forces a certain mod to be returned from
+
+ The mod to be forced
+
+
+
+ Clears the current mod context
+
+
+
+
+ Searches for valid mods and their assemblies, and decides the load order based on their settings
+
+
+
+
+ Check if corresponds with a valid mod
+
+ Mod ID to check
+ Whether or not the mod exists
+
+
+
+ Gets the associated for the associated
+
+ Relevant Mod ID
+ The associated ModInfo
+
+
+
+ Get an instance from a Mod ID
+
+ The ModID
+ The corresponding instance, or null
+
+
+
+ Utility class to help with the discovery and loading of mod assemblies
+
+
+
+
+ Class that represents a mod before it has been loaded or fully processed
+
+
+
+
+ Create a protomod from json info
+
+ Path of the json file
+ The parsed
+
+
+
+ Try to create a protomod from an embedded modinfo json in a DLL
+
+ Path to the DLL file to process
+ The parsed , or null
+ Whether the parsing was successful
+
+
+
+ Make sure fields are in the correct form and not null
+
+
+
+
+ Turn the protomod into a proper instance
+
+ Converted
+
+
+
+ Reverses the order of the elements in the entire .
+
+
+
+
+ Reverses a array
+
+
+
+
+ Swap two elements in array
+
+
+
+
+ Creates a from a .
+
+ A that contains elements from the input sequence except
+
+
+
+
+ Attempts to get a value from a collection.
+
+ True if an element in the collection matches the specified condition, otherwise false.
+
+
+
+ Returns new array without element at index
+
+
+
+
+ Returns new array with inserted empty element at index
+
+
+
+
+ Returns random element from collection
+
+
+
+
+ Returns random element from collection
+
+
+
+
+ Returns random element from collection
+
+
+
+
+ Is array null or empty
+
+
+
+
+ Is collection null or empty
+
+
+
+
+ Is enumerable null or empty. IEnumerable is relatively slow. Use Array or Collection implementation if possible
+
+
+
+
+ Get next index for circular array. i.e. -1 will result with last element index, Length + 1 is 0
+
+ Example (infinite loop first->last->first):
+ i = myArray.NextIndex(i++);
+ var nextItem = myArray[i];
+
+
+
+
+ Returns -1 if none found
+
+
+
+
+ Is Elements in two collections are the same
+
+
+
+
+ Is Keys in MyDictionary is the same as some collection
+
+
+
+
+ Is Values in MyDictionary is the same as some collection
+
+
+
+
+ Gets the value associated with the specified key if it exists, or
+ return the default value for the value type if it doesn't.
+
+
+
+
+ Gets the value associated with the specified key if it exists, or
+ generate a value for the new key if it doesn't.
+
+
+
+
+ Performs an action on each element of a collection.
+
+
+
+
+ Performs a function on each element of a collection.
+
+
+
+
+ Find the element of a collection that has the highest selected value.
+
+
+
+
+ Find the element of a collection that has the lowest selected value.
+
+
+
+
+ Returns new Color with Alpha set to a
+
+
+
+
+ Set Alpha of Renderer.Color
+
+
+
+
+ To string of "#b5ff4f" format
+
+
+
+
+ Returns a color lighter than the given color.
+
+
+
+
+
+
+ Returns a color darker than the given color.
+
+
+
+
+
+
+ Brightness offset with 1 is brightest and -1 is darkest
+
+
+
+
+ Converts unix timestamp to with high precision.
+
+ Unix timestamp.
+ DateTime object that represents the same moment in time as provided Unix time.
+
+
+
+ Converts to unix timestamp with high precision
+
+ DateTime date representation.
+ unix timestamp that represents the same moment in time as provided DateTime object.
+
+
+
+ Stop value from going above max or below min values.
+
+
+
+
+ Stop value from going above max or below min values.
+
+
+
+
+ Stop value from going above max or below min values.
+
+
+
+
+ Swap two reference values
+
+
+
+
+ Snap to grid of "round" size
+
+
+
+
+ Snap to grid of "round" size
+
+
+
+
+ Returns the sign 1/-1 evaluated at the given value.
+
+
+
+
+ Value is in [0, 1) range.
+
+
+
+
+ Value is in [closedLeft, openRight) range.
+
+
+
+
+ Value is in [closedLeft, closedRight] range, max-inclusive.
+
+
+
+
+ Clamp value to less than min or more than max
+
+
+
+
+ Clamp value to less than min or more than max
+
+
+
+
+ Return point A or B, closest to num
+
+
+
+
+ Contains extension methods for
+
+
+
+
+ Performs a TRUE null-check.
+
+ An object to check.
+ Returns if object is null, otherwise.
+
+
+
+ Performs a TRUE not-null-check.
+
+ An object to check.
+ Returns if object is null, otherwise.
+
+
+
+ Invokes a method
+
+ The object you are invoking the method in
+ The name of the method
+ parameters
+
+
+
+ Invokes a method
+
+ Type of return
+ The object you are invoking the method in
+ The name of the method
+ parameters
+
+
+
+ Sets the value of a field
+
+ The object to set the field value of
+ The name of the field
+ The value to set
+
+
+
+ Sets the value of a field
+
+ The object to set the field value of
+ The name of the field
+ The value to set
+ Type of value
+
+
+
+ Gets the value of a field
+
+ The object to get the value from
+ The name of the field
+
+
+
+ Gets the value of a field
+
+ The object to get the value from
+ The name of the field
+ Type of value
+
+
+
+ Sets the value of a property
+
+ The object to set the property value of
+ The name of the property
+ The value to set
+ Type of value
+
+
+
+ Sets the value of a property
+
+ The object to set the property value of
+ The name of the property
+ The value to set
+ Type of value
+
+
+
+ Gets the value of a property
+
+ The object to get the value from
+ The name of the property
+
+
+
+ Gets the value of a property
+
+ The object to get the value from
+ The name of the property
+ Type of value
+
+
+
+ Contains extension methods for
+
+
+
+
+ Clones the Scriptable Object
+
+
+
+ Indicates whether the specified string is or an empty string ("").
+ if the parameter is or an empty string (""); otherwise, .
+
+
+ Indicates whether a specified string is , empty, or consists only of white-space characters.
+ if the parameter is or , or if consists exclusively of white-space characters.
+
+
+
+ Returns a String array containing the substrings in this string that are delimited by elements of a specified
+ String array. A parameter specifies whether to return empty array elements.
+
+ The @this to act on.
+ A string that delimit the substrings in this string.
+
+ (Optional) Specify RemoveEmptyEntries to omit empty array elements from the array returned,
+ or None to include empty array elements in the array returned.
+
+
+ An array whose elements contain the substrings in this string that are delimited by the separator.
+
+
+
+
+ Reverses the string
+
+
+
+
+ Convert a string value to an Enum value.
+
+
+
+
+ Number presented in Roman numerals
+
+
+
+
+ Get the "message" string with the "surround" string at the both sides
+
+
+
+
+ Get the "message" string with the "start" at the beginning and "end" at the end of the string
+
+
+
+
+ Surround string with "color" tag
+
+
+
+
+ Surround string with "color" tag
+
+
+
+
+ Surround string with "size" tag
+
+
+
+
+ Surround string with "u" tag
+
+
+
+
+ Surround string with "b" tag
+
+
+
+
+ Surround string with "i" tag
+
+
+
+
+ Removes anything after the parameter
+
+ The string to seek
+ Whether to remove the
+
+
+
+ Removes anything after the parameter
+
+ The string to seek
+ Whether to remove the
+
+
+
+ Retrieves specified symbols amount from the end of the string.
+
+ Source string.
+ Amount of symbols
+ Specified symbols amount from the end of the string.
+
+
+
+ Removes specified symbols amount from the end of the string.
+
+ Source string.
+ Amount of symbols
+ Modified string.
+
+
+
+ Retrieves specified symbols amount from the beginning of the string.
+
+ Source string.
+ Amount of symbols
+ Specified symbols amount from the beginning of the string.
+
+
+
+ Method will return all the indexes for a matched string.
+
+ Source string.
+ String Value to look for.
+ Comparison Type.
+ Indexes for a matched string.
+
+
+
+
+ Removes all the leading occurrences of specified string from the current string.
+
+ Current string.
+ A string to remove.
+ The string that remains after all occurrences of trimString parameter are removed from the start of the current string.
+
+
+
+ Removes all the trailing occurrences of specified string from the current string.
+
+ Current string
+ A string to remove.
+ The string that remains after all occurrences of trimString parameter are removed from the end of the current string.
+
+
+
+ Represents list of supported by Unity Console color names
+
+
+
+
+ Create new sprite out of Texture
+
+ A texture to created sprite from.
+ New sprite instance.
+
+
+
+ Change texture size (and scale accordingly)
+
+
+
+
+ Crop texture to desired size.
+ Somehow cropped image seemed darker, brightness offset may fix this
+
+
+
+
+ Will texture with solid color
+
+
+
+
+ Convert png representation to base64 string.
+
+ Texture to convert.
+ Converted texture as base64 string
+
+
+
+ Loads texture content from base64 string.
+
+ Texture to load image content into.
+ Base64 string image representation.
+ Updated texture.
+
+
+
+ Resets `anchorMin`, `anchorMax`, `offsetMin`, `offsetMax` to `Vector2.zero`.
+
+ RectTransform to operate with.
+
+
+
+ Get's the screen rect of provided RectTransform.
+
+ RectTransform to operate with.
+ Screen rect.
+
+
+
+ Method to get Rect related to ScreenSpace, from given RectTransform.
+ This will give the real position of this Rect on screen.
+
+ Original RectTransform of some object
+ New Rect instance.
+
+
+
+ Sets value.
+
+ Transform component.
+ New lossyScale value.
+
+
+
+ Reset component position, scale and rotation.
+
+ Transform component.
+
+
+
+ Removes all transform children.
+
+ Transform component.
+ Will ignore disabled game-objects when set to true.
+
+
+
+
+ Find or create child with name.
+
+ Transform component.
+ Child name.
+ Child component instance.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Set position to Vector3.zero.
+
+
+
+
+ Set sizeDelta to Vector2.Zero.
+
+
+
+
+ Snap to grid of snapValue
+
+
+
+
+ Snap to grid of snapValue
+
+
+
+
+ Snap to grid of snapValue
+
+
+
+
+ Snap position to grid of snapValue
+
+
+
+
+ Snap to one unit grid
+
+
+
+
+ Snap to one unit grid
+
+
+
+
+ Snap to one unit grid
+
+
+
+
+ Finds the position closest to the given one.
+
+ World position.
+ Other world positions.
+ Closest position.
+
+
+
+ Get vector between source and destination
+
+
+
+
+ Get vector between source and destination
+
+
+
+
+ Get vector between source and destination
+
+
+
+
+ Get vector between source and target
+
+
+
+
+ Get vector between source and target
+
+
+
+
+ Get vector between source and target
+
+
+
+
+ Get vector between source and target
+
+
+
+
+ Calculates a squared distance between current and given vectors.
+
+ The current vector.
+ The given vector.
+ Returns squared distance between current and given vectors.
+
+
+
+ Multiplies each element in Vector3 by the given scalar.
+
+ The current vector.
+ The given scalar.
+ Returns new Vector3 containing the multiplied components.
+
+
+
+ Multiplies each element in Vector3 a by the corresponding element of b.
+
+ The current vector.
+ The given vector.
+ Returns new Vector3 containing the multiplied components of the given vectors.
+
+
+
+ Smoothes a Vector3 that represents euler angles.
+
+ The current Vector3 value.
+ The target Vector3 value.
+ A refernce Vector3 used internally.
+ The time to smooth, in seconds.
+ The smoothed Vector3 value.
+
+
+
+ Calculates a squared distance between current and given vectors.
+
+ The current vector.
+ The given vector.
+ Returns squared distance between current and given vectors.
+
+
+
+ Multiplies each element in Vector2 by the given scalar.
+
+ The current vector.
+ The given scalar.
+ Returns new Vector2 containing the multiplied components.
+
+
+
+ Multiplies each element in Vector2 a by the corresponding element of b.
+
+ The current vector.
+ The given vector.
+ Returns new Vector2 containing the multiplied components of the given vectors.
+
+
+
+ Handles identification of Modded ID's
+
+
+
+
+ Adds more methods to to allow for more flexable addition
+
+
+
+
diff --git a/SRMP/Console/Console Commands.txt b/SRMP/Console/Console Commands.txt
new file mode 100644
index 0000000..2ea5f3e
--- /dev/null
+++ b/SRMP/Console/Console Commands.txt
@@ -0,0 +1,20 @@
+The following console Commands work in the pop up console
+
+cheat money [amount]
+ Add or Remove the given amount from the curret money score
+
+cheat keys [amount]
+ Add or Remove the given amount of keys from the current amount
+
+cheat allgadgets
+ Unlocks all of the gagets in the game
+
+cheat spawn [id] ([amount])
+
+tp [DestinationPlayer]
+ Teleports the player that entered in the commant to the player entered
+listplayers
+ Prints the list of current players to the console
+
+sleep [Hours]
+ Sleep command followed by the time in in game hours to "sleep"". Fast forwards the game the alotted hours.
\ No newline at end of file
diff --git a/SRMP/Networking/NetworkGordo.cs b/SRMP/Networking/NetworkGordo.cs
index 94685f0..9ddc3db 100644
--- a/SRMP/Networking/NetworkGordo.cs
+++ b/SRMP/Networking/NetworkGordo.cs
@@ -10,7 +10,7 @@ namespace SRMultiplayer.Networking
{
public class NetworkGordo : MonoBehaviour
{
- public string ID { get { return Gordo.id == null ? Gordo.GetComponentInParent(true).id : Gordo.id; } }
+ public string ID { get { return Gordo.id == null ? Gordo.GetComponentInParent(true).id : Gordo.id; } }
public GordoEat Gordo;
public NetworkRegion Region;
@@ -33,36 +33,51 @@ namespace SRMultiplayer.Networking
public void Burst()
{
+ //if object is in active mark the reach target
if (gameObject.activeInHierarchy)
{
StartCoroutine(ReachedTarget());
}
else
{
+ //if not just dismiss the gordo completely
Gordo.gameObject.SetActive(false);
Gordo.SetEatenCount(-1);
}
}
+ //process the gordo burst reaction
private IEnumerator ReachedTarget()
{
+ //start the burst and begin sounds and animations
Gordo.WillStartBurst();
Gordo.GetComponent().SetTrigger("Strain");
SECTR_AudioSystem.Play(Gordo.strainCue, Gordo.transform.position, false);
+ //wait for amination/sounds to finish
yield return new WaitForSeconds(2f);
SECTR_AudioSystem.Play(Gordo.burstCue, Gordo.transform.position, false);
+
+ //if the gordo has a destroy effect process it
if (Gordo.destroyFX != null)
{
+ //play the spawn behavior for destroy events for the gordo that is bursting
GameObject gameObject = SRBehaviour.SpawnAndPlayFX(Gordo.destroyFX, Gordo.transform.position + Vector3.up * 2f, Gordo.transform.rotation);
+ //get the gordo slime type
Identifiable component = Gordo.gameObject.GetComponent();
+ //get the color of the current gordo
Color[] colors = SlimeUtil.GetColors(Gordo.gameObject, (component != null) ? component.id : Identifiable.Id.NONE, true);
+ //get the slime children spawned by the gordo
RecolorSlimeMaterial[] componentsInChildren = gameObject.GetComponentsInChildren();
for (int i = 0; i < componentsInChildren.Length; i++)
{
+ //foreach slime in the count spawned by the gordo, set their coloring
componentsInChildren[i].SetColors(colors[0], colors[1], colors[2]);
}
}
+ //trigger the burst completed event
Gordo.DidCompleteBurst();
+
+ //despawn the bursted gordo from game
Gordo.gameObject.SetActive(false);
Gordo.SetEatenCount(-1);
yield break;
diff --git a/SRMP/Networking/NetworkHandlerClient.cs b/SRMP/Networking/NetworkHandlerClient.cs
index ae0119f..398c473 100644
--- a/SRMP/Networking/NetworkHandlerClient.cs
+++ b/SRMP/Networking/NetworkHandlerClient.cs
@@ -274,7 +274,7 @@ namespace SRMultiplayer.Networking
private static void OnFireColumnActivate(PacketFireColumnActivate packet)
{
- if(Globals.FireColumns.TryGetValue(packet.ID, out NetworkFireColumn netColumn))
+ if (Globals.FireColumns.TryGetValue(packet.ID, out NetworkFireColumn netColumn))
{
netColumn.Column.ActivateFire();
}
@@ -321,9 +321,9 @@ namespace SRMultiplayer.Networking
private static void OnOasis(PacketOasis packet)
{
- foreach(var oasisData in packet.Oasis)
+ foreach (var oasisData in packet.Oasis)
{
- if(SRSingleton.Instance.GameModel.AllOases().TryGetValue(oasisData.ID, out OasisModel model))
+ if (SRSingleton.Instance.GameModel.AllOases().TryGetValue(oasisData.ID, out OasisModel model))
{
model.isLive = oasisData.Model.isLive;
@@ -337,30 +337,44 @@ namespace SRMultiplayer.Networking
#region Exchanges
private static void OnExchangeTryAccept(PacketExchangeTryAccept packet)
{
+ //get the exchange type
var type = (ExchangeDirector.OfferType)packet.Type;
+ //check if current scene (view) contains the item in question
if (SRSingleton.Instance.ExchangeDirector.worldModel.currOffers.ContainsKey(type))
{
+ //handle the scene changes for the given offer
var offer = SRSingleton.Instance.ExchangeDirector.worldModel.currOffers[type];
+ //cycle through requested items
foreach (ExchangeDirector.RequestedItemEntry requestedItemEntry in offer.requests)
{
+ //check if the item can be accespted
+ //is on the board and not already completed
if (requestedItemEntry.id == (Identifiable.Id)packet.ID && !requestedItemEntry.IsComplete())
{
+ //mark submit to log
SRMP.Log($"Exchange TryAccept for {(Identifiable.Id)packet.ID} ({(ExchangeDirector.OfferType)packet.Type}", "SERVER");
+ //mark progress
requestedItemEntry.progress++;
+
+ //if the given item completes the necesary quantity
if (offer.IsComplete())
{
- foreach(var rewarder in Resources.FindObjectsOfTypeAll())
+ foreach (var rewarder in Resources.FindObjectsOfTypeAll())
{
rewarder.AwardIfType(type);
}
SRSingleton.Instance.ExchangeDirector.ClearOffer(type);
}
+
+ //trigger offer status changed
SRSingleton.Instance.ExchangeDirector.OfferDidChange();
}
}
}
}
+
+
private static void OnExchangePrepareDaily(PacketExchangePrepareDaily packet)
{
SRSingleton.Instance.ExchangeDirector.worldModel.pendingOfferRancherIds = packet.pendingOfferRancherIds;
@@ -414,7 +428,7 @@ namespace SRMultiplayer.Networking
private static void OnTreasurePods(PacketTreasurePods packet)
{
- foreach(var pod in packet.TreasurePods)
+ foreach (var pod in packet.TreasurePods)
{
if (SRSingleton.Instance.GameModel.AllPods().TryGetValue(pod.ID, out TreasurePodModel model))
{
@@ -446,7 +460,7 @@ namespace SRMultiplayer.Networking
if (model.HasAttached())
{
var netDrone = model.attached.transform.GetComponentInChildren(true);
- if(netDrone != null)
+ if (netDrone != null)
{
netDrone.PositionRotationUpdate(packet.Position, packet.Rotation, false);
}
@@ -675,7 +689,7 @@ namespace SRMultiplayer.Networking
extractor.nextProduceTime = packet.nextProduceTime;
extractor.queuedToProduce = packet.queuedToProduce;
- if(extractor.cyclesRemaining <= 0)
+ if (extractor.cyclesRemaining <= 0)
{
var extractorScript = extractor.transform.GetComponent();
if (extractorScript != null && extractorScript.gameObject.activeInHierarchy)
@@ -770,7 +784,7 @@ namespace SRMultiplayer.Networking
private static void OnGadgets(PacketGadgets packet)
{
List regions = new List();
- foreach(var gadgetData in packet.Gadgets)
+ foreach (var gadgetData in packet.Gadgets)
{
if (SRSingleton.Instance.GameModel.AllGadgetSites().TryGetValue(gadgetData.ID, out GadgetSiteModel model))
{
@@ -823,7 +837,7 @@ namespace SRMultiplayer.Networking
}
}
- foreach(var region in regions)
+ foreach (var region in regions)
{
if (Globals.Regions.TryGetValue(region, out NetworkRegion netRegion))
{
@@ -881,7 +895,7 @@ namespace SRMultiplayer.Networking
private static void OnPuzzleSlots(PacketPuzzleSlots packet)
{
- foreach(var puzzleSlotData in packet.PuzzleSlots)
+ foreach (var puzzleSlotData in packet.PuzzleSlots)
{
if (SRSingleton.Instance.GameModel.AllSlots().TryGetValue(puzzleSlotData.ID, out PuzzleSlotModel model))
{
@@ -919,7 +933,7 @@ namespace SRMultiplayer.Networking
private static void OnGordos(PacketGordos packet)
{
- foreach(var gordoData in packet.Gordos)
+ foreach (var gordoData in packet.Gordos)
{
if (SRSingleton.Instance.GameModel.AllGordos().TryGetValue(gordoData.ID, out GordoModel model))
{
@@ -959,7 +973,7 @@ namespace SRMultiplayer.Networking
private static void OnAccessDoors(PacketAccessDoors packet)
{
- foreach(var doorData in packet.Doors)
+ foreach (var doorData in packet.Doors)
{
if (SRSingleton.Instance.GameModel.AllDoors().TryGetValue(doorData.ID, out AccessDoorModel model))
{
@@ -1216,7 +1230,7 @@ namespace SRMultiplayer.Networking
}
var phaseSiteDirector = GameObject.FindObjectOfType();
- if(phaseSiteDirector != null)
+ if (phaseSiteDirector != null)
{
phaseSiteDirector.ResetAllSites();
foreach (PhaseSite phaseSite in new List(phaseSiteDirector.availablePhaseSites))
@@ -1295,7 +1309,7 @@ namespace SRMultiplayer.Networking
private static void OnLandPlotSiloAmmoAdd(PacketLandPlotSiloAmmoAdd packet)
{
- if(NetworkAmmo.All.TryGetValue(packet.ID, out NetworkAmmo ammo))
+ if (NetworkAmmo.All.TryGetValue(packet.ID, out NetworkAmmo ammo))
{
ammo.MaybeAddToSpecificSlot((Identifiable.Id)packet.Ident, null, packet.Slot, packet.Count, packet.Overflow);
SRMP.Log($"NetworkAmmo add slot {packet.Slot} (Type: {(Identifiable.Id)packet.Ident} - Count: {packet.Count}) for {packet.ID}", "CLIENT");
@@ -1488,7 +1502,7 @@ namespace SRMultiplayer.Networking
private static void OnLandPlots(PacketLandplots packet)
{
- foreach(var plotData in packet.LandPlots)
+ foreach (var plotData in packet.LandPlots)
{
if (SRSingleton.Instance.GameModel.AllLandPlots().TryGetValue(plotData.ID, out LandPlotModel model))
{
@@ -1538,7 +1552,7 @@ namespace SRMultiplayer.Networking
{
var type = (PacketActorFX.FXType)packet.Type;
var slimeEat = netActor.GetComponentInChildren();
- if(slimeEat != null)
+ if (slimeEat != null)
{
if (type == PacketActorFX.FXType.SlimeEatFavoriteFX)
{
@@ -1748,7 +1762,7 @@ namespace SRMultiplayer.Networking
private static void OnActors(PacketActors packet)
{
- foreach(var actorData in packet.Actors)
+ foreach (var actorData in packet.Actors)
{
if (!Globals.Actors.ContainsKey(actorData.ID))
{
@@ -1809,7 +1823,7 @@ namespace SRMultiplayer.Networking
Globals.Actors.Add(netActor.ID, netActor);
}
- catch(Exception ex)
+ catch (Exception ex)
{
SRMP.Log($"Could not create actor {actorData.ID}: {ex}");
}
@@ -1966,7 +1980,7 @@ namespace SRMultiplayer.Networking
SRSingleton.Instance.PlayerState.model.ammoDict[state].slots = new Ammo.Slot[slotCount];
for (int j = 0; j < slotCount; j++)
{
- if(reader.ReadBoolean())
+ if (reader.ReadBoolean())
{
SRSingleton.Instance.PlayerState.model.ammoDict[state].slots[j] = new Ammo.Slot((Identifiable.Id)reader.ReadUInt16(), reader.ReadInt32());
if (reader.ReadBoolean())
diff --git a/SRMP/Networking/NetworkHandlerServer.cs b/SRMP/Networking/NetworkHandlerServer.cs
index ee0c1d0..1b0f83e 100644
--- a/SRMP/Networking/NetworkHandlerServer.cs
+++ b/SRMP/Networking/NetworkHandlerServer.cs
@@ -19,7 +19,7 @@ namespace SRMultiplayer.Networking
if (!Globals.PacketSize.ContainsKey(type))
Globals.PacketSize.Add(type, 0);
Globals.PacketSize[type] += im.LengthBytes;
- switch(type)
+ switch (type)
{
//Player
case PacketType.PlayerLoaded: OnPlayerLoaded(new PacketPlayerLoaded(im), player); break;
@@ -140,7 +140,7 @@ namespace SRMultiplayer.Networking
#region Race
private static void OnRaceTrigger(PacketRaceTrigger packet, NetworkPlayer player)
{
- if(Globals.RaceTriggers.TryGetValue(packet.ID, out NetworkRaceTrigger trigger))
+ if (Globals.RaceTriggers.TryGetValue(packet.ID, out NetworkRaceTrigger trigger))
{
trigger.Activate();
}
@@ -172,7 +172,7 @@ namespace SRMultiplayer.Networking
var generator = QuicksilverEnergyGenerator.allGenerators.FirstOrDefault(g => g.id == packet.ID);
if (generator)
{
- if(Globals.LocalPlayer.CurrentGenerator.id == generator.id)
+ if (Globals.LocalPlayer.CurrentGenerator.id == generator.id)
{
generator.Activate();
}
@@ -242,9 +242,9 @@ namespace SRMultiplayer.Networking
oasis.SetLive(!model.gameObj.activeInHierarchy);
var oasisTriggers = GameObject.FindObjectsOfType();
- foreach(var trigger in oasisTriggers)
+ foreach (var trigger in oasisTriggers)
{
- if(trigger.oasisToScale == oasis && !trigger.hasAlreadyActivated)
+ if (trigger.oasisToScale == oasis && !trigger.hasAlreadyActivated)
{
if (trigger.scaleCue != null)
{
@@ -312,7 +312,7 @@ namespace SRMultiplayer.Networking
{
SRMP.Log($"Exchange TryAccept for {(Identifiable.Id)packet.ID} ({(ExchangeDirector.OfferType)packet.Type}", "SERVER");
requestedItemEntry.progress++;
- if(offer.IsComplete())
+ if (offer.IsComplete())
{
foreach (var rewarder in Resources.FindObjectsOfTypeAll())
{
@@ -482,7 +482,7 @@ namespace SRMultiplayer.Networking
{
if (SRSingleton.Instance.GameModel.AllGadgetSites().TryGetValue(packet.ID, out GadgetSiteModel model))
{
- if(model.HasAttached())
+ if (model.HasAttached())
{
model.attached.transform.GetComponent().drone.ammo.MaybeAddToSpecificSlot((Identifiable.Id)packet.Ident, null, 0, 1);
}
@@ -497,7 +497,7 @@ namespace SRMultiplayer.Networking
if (Globals.GadgetSites.TryGetValue(packet.ID, out NetworkGadgetSite netSite))
{
var echoNet = netSite.Site.GetComponentInChildren(true);
- if(echoNet != null)
+ if (echoNet != null)
{
echoNet.ResetSpawnTime(echoNet.model);
}
@@ -510,7 +510,7 @@ namespace SRMultiplayer.Networking
if (Globals.GadgetSites.TryGetValue(packet.ID, out NetworkGadgetSite netSite))
{
var snare = netSite.Site.GetComponentInChildren(true);
- if(snare != null)
+ if (snare != null)
{
if (!snare.IsBaited() || snare.HasSnaredGordo())
{
@@ -579,7 +579,7 @@ namespace SRMultiplayer.Networking
{
Globals.GadgetSites.TryGetValue(packet.ID, out NetworkGadgetSite netSite);
bool didUnproxy = false;
- if(netSite != null)
+ if (netSite != null)
{
if (!netSite.Region.Region.root.activeSelf)
{
@@ -622,7 +622,7 @@ namespace SRMultiplayer.Networking
foreach (var data in packet.Amounts)
{
SRSingleton.Instance.GameModel.GetGadgetsModel().craftMatCounts[(Identifiable.Id)data.Key] -= data.Value;
- if(SRSingleton.Instance.GameModel.GetGadgetsModel().craftMatCounts[(Identifiable.Id)data.Key] < 0)
+ if (SRSingleton.Instance.GameModel.GetGadgetsModel().craftMatCounts[(Identifiable.Id)data.Key] < 0)
{
SRSingleton.Instance.GameModel.GetGadgetsModel().craftMatCounts[(Identifiable.Id)data.Key] = 0;
}
@@ -720,7 +720,7 @@ namespace SRMultiplayer.Networking
if (attachFashions != null)
{
var component = SRSingleton.Instance.LookupDirector.GetPrefab((Identifiable.Id)packet.Fashion)?.GetComponent();
- if(component != null)
+ if (component != null)
{
attachFashions.Attach(component, !attachFashions.gameObject.activeInHierarchy);
}
@@ -821,17 +821,17 @@ namespace SRMultiplayer.Networking
private static void OnWorldDecorizer(PacketWorldDecorizer packet, NetworkPlayer player)
{
- foreach(var c in packet.Contents)
+ foreach (var c in packet.Contents)
{
- for(int i = 0; i < c.Value; i++)
+ for (int i = 0; i < c.Value; i++)
{
SRSingleton.Instance.GameModel.decorizer.contents.Increment(c.Key);
}
}
- foreach(var setting in packet.Settings)
+ foreach (var setting in packet.Settings)
{
var storage = SRSingleton.Instance.GameModel.decorizer.participants.FirstOrDefault(c => ((DecorizerStorage)c).id == setting.Key);
- if(storage != null)
+ if (storage != null)
{
((DecorizerStorage)storage).selected = (Identifiable.Id)setting.Value;
}
@@ -952,7 +952,7 @@ namespace SRMultiplayer.Networking
if (SRSingleton.Instance.GameModel.AllLandPlots().TryGetValue(packet.ID, out LandPlotModel model))
{
var incinerate = model.gameObj.GetComponentInChildren();
- if(incinerate != null)
+ if (incinerate != null)
{
SRBehaviour.SpawnAndPlayFX(incinerate.ExplosionFX, packet.Position, packet.Rotation);
if (packet.Small)
@@ -976,7 +976,7 @@ namespace SRMultiplayer.Networking
private static void OnGlobalFX(PacketGlobalFX packet, NetworkPlayer player)
{
- if(Globals.FXPrefabs.TryGetValue(packet.Name, out GameObject prefabFX))
+ if (Globals.FXPrefabs.TryGetValue(packet.Name, out GameObject prefabFX))
{
SRBehaviour.SpawnAndPlayFX(prefabFX, packet.Position, Quaternion.identity);
}
@@ -1080,7 +1080,7 @@ namespace SRMultiplayer.Networking
if (SRSingleton.Instance.GameModel.AllLandPlots().TryGetValue(packet.ID, out LandPlotModel model))
{
var collector = model.gameObj.GetComponentInChildren();
- if(collector != null)
+ if (collector != null)
{
collector.StartCollection();
}
@@ -1268,14 +1268,14 @@ namespace SRMultiplayer.Networking
private static void OnRegionOwner(PacketRegionOwner packet, NetworkPlayer player)
{
- if(Globals.Regions.TryGetValue(packet.ID, out NetworkRegion netRegion))
+ if (Globals.Regions.TryGetValue(packet.ID, out NetworkRegion netRegion))
{
- if(packet.Owner == 0 && netRegion.Owner == player.ID)
+ if (packet.Owner == 0 && netRegion.Owner == player.ID)
{
netRegion.SetOwnership(0);
packet.SendToAll();
}
- else if(packet.Owner != 0 && netRegion.Owner == 0)
+ else if (packet.Owner != 0 && netRegion.Owner == 0)
{
netRegion.SetOwnership(packet.Owner);
packet.SendToAll();
@@ -1338,7 +1338,7 @@ namespace SRMultiplayer.Networking
var slimeFeral = netActor.GetComponentInChildren(true);
if (slimeFeral != null)
{
- if(packet.Feral)
+ if (packet.Feral)
{
slimeFeral.MakeFeral();
}
@@ -1384,7 +1384,7 @@ namespace SRMultiplayer.Networking
if (Globals.Actors.TryGetValue(packet.ID, out NetworkActor netActor))
{
var cycle = netActor.GetComponentInChildren(true);
- if(cycle != null)
+ if (cycle != null)
{
var state = (ResourceCycle.State)packet.State;
//SRMP.Log($"Resource state for {netActor.name} ({netActor.ID}): {state}", "SERVER");
@@ -1401,7 +1401,7 @@ namespace SRMultiplayer.Networking
}
TweenUtil.ScaleTo(cycle.gameObject, cycle.defaultScale, 4f, Ease.InOutQuad);
}
- else if(state == ResourceCycle.State.EDIBLE)
+ else if (state == ResourceCycle.State.EDIBLE)
{
cycle.MakeEdible();
cycle.additionalRipenessDelegate = null;
@@ -1427,7 +1427,7 @@ namespace SRMultiplayer.Networking
cycle.vacuumable.Pending = false;
}
}
- else if(state == ResourceCycle.State.ROTTEN)
+ else if (state == ResourceCycle.State.ROTTEN)
{
cycle.Rot();
cycle.SetRotten(!cycle.gameObject.activeInHierarchy);
@@ -1525,7 +1525,7 @@ namespace SRMultiplayer.Networking
netActor.KnownPlayers.AddRange(Globals.Players.Values.Where(p => p.HasLoaded));
var resourceCycle = actorObj.GetComponentInChildren(true);
- if(resourceCycle != null)
+ if (resourceCycle != null)
{
resourceCycle.SetInitState(ResourceCycle.State.UNRIPE, double.MaxValue);
}
@@ -1574,7 +1574,7 @@ namespace SRMultiplayer.Networking
private static void OnPlayerCurrencyDisplay(PacketPlayerCurrencyDisplay packet, NetworkPlayer player)
{
SRSingleton.Instance.PlayerState.SetCurrencyDisplay(packet.IsNull ? null : new int?(packet.Currency));
- if(packet.IsNull)
+ if (packet.IsNull)
{
SRSingleton.Instance.CreateCoinsPopup(packet.Currency, PlayerState.CoinsType.DRONE);
}
@@ -1657,7 +1657,7 @@ namespace SRMultiplayer.Networking
private static void OnPlayerAnimationLayer(NetIncomingMessage im, NetworkPlayer player)
{
- if(player.HasLoaded)
+ if (player.HasLoaded)
{
byte id = im.ReadByte();
player.ReadAnimatorLayer(im);
@@ -1707,7 +1707,7 @@ namespace SRMultiplayer.Networking
Contents = SRSingleton.Instance.GameModel.decorizer.contents.ToDictionary(c => c.Key, v => v.Value),
Settings = SRSingleton.Instance.GameModel.decorizer.settings.ToDictionary(s => s.Key, v => (ushort)v.Value.selected)
}.Send(player, NetDeliveryMethod.ReliableOrdered);
-
+
new PacketLandplots()
{
LandPlots = Globals.LandPlots.Values.Where(l => l.Plot.model != null).Select(l => new PacketLandplots.LandPlotData() { ID = l.Location.id, Model = l.Plot.model }).ToList()
diff --git a/SRMP/SRMP.csproj b/SRMP/SRMP.csproj
index 1a8dde0..61d62e3 100644
--- a/SRMP/SRMP.csproj
+++ b/SRMP/SRMP.csproj
@@ -74,20 +74,20 @@
- C:\Program Files (x86)\Steam\steamapps\common\Slime Rancher\SlimeRancher_Data\Managed\0Harmony.dll
+ C:\Program Files\Epic Games\SlimeRancher\SlimeRancher_Data\Managed\0Harmony.dll
..\Libs\Assembly-CSharp_publicized.dll
- C:\Program Files (x86)\Steam\steamapps\common\Slime Rancher\SlimeRancher_Data\Managed\DOTween.dll
+ C:\Program Files\Epic Games\SlimeRancher\SlimeRancher_Data\Managed\DOTween.dll
- C:\Program Files (x86)\Steam\steamapps\common\Slime Rancher\SlimeRancher_Data\Managed\InControl.dll
+ C:\Program Files\Epic Games\SlimeRancher\SlimeRancher_Data\Managed\InControl.dll
False
- C:\Program Files (x86)\Steam\steamapps\common\Slime Rancher\SlimeRancher_Data\Managed\Newtonsoft.Json.dll
+ C:\Program Files\Epic Games\SlimeRancher\SlimeRancher_Data\Managed\Newtonsoft.Json.dll
False
@@ -103,46 +103,46 @@
- C:\Program Files (x86)\Steam\steamapps\common\Slime Rancher\SlimeRancher_Data\Managed\Unity.TextMeshPro.dll
+ C:\Program Files\Epic Games\SlimeRancher\SlimeRancher_Data\Managed\Unity.TextMeshPro.dll
False
- C:\Program Files (x86)\Steam\steamapps\common\Slime Rancher\SlimeRancher_Data\Managed\UnityCoreMod.dll
+ C:\Program Files\Epic Games\SlimeRancher\SlimeRancher_Data\Managed\UnityCoreMod.dll
- C:\Program Files (x86)\Steam\steamapps\common\Slime Rancher\SlimeRancher_Data\Managed\UnityEngine.dll
+ C:\Program Files\Epic Games\SlimeRancher\SlimeRancher_Data\Managed\UnityEngine.dll
- C:\Program Files (x86)\Steam\steamapps\common\Slime Rancher\SlimeRancher_Data\Managed\UnityEngine.AnimationModule.dll
+ C:\Program Files\Epic Games\SlimeRancher\SlimeRancher_Data\Managed\UnityEngine.AnimationModule.dll
- C:\Program Files (x86)\Steam\steamapps\common\Slime Rancher\SlimeRancher_Data\Managed\UnityEngine.AssetBundleModule.dll
+ C:\Program Files\Epic Games\SlimeRancher\SlimeRancher_Data\Managed\UnityEngine.AssetBundleModule.dll
- C:\Program Files (x86)\Steam\steamapps\common\Slime Rancher\SlimeRancher_Data\Managed\UnityEngine.CoreModule.dll
+ C:\Program Files\Epic Games\SlimeRancher\SlimeRancher_Data\Managed\UnityEngine.CoreModule.dll
- C:\Program Files (x86)\Steam\steamapps\common\Slime Rancher\SlimeRancher_Data\Managed\UnityEngine.IMGUIModule.dll
+ C:\Program Files\Epic Games\SlimeRancher\SlimeRancher_Data\Managed\UnityEngine.IMGUIModule.dll
- C:\Program Files (x86)\Steam\steamapps\common\Slime Rancher\SlimeRancher_Data\Managed\UnityEngine.InputLegacyModule.dll
+ C:\Program Files\Epic Games\SlimeRancher\SlimeRancher_Data\Managed\UnityEngine.InputLegacyModule.dll
- C:\Program Files (x86)\Steam\steamapps\common\Slime Rancher\SlimeRancher_Data\Managed\UnityEngine.PhysicsModule.dll
+ C:\Program Files\Epic Games\SlimeRancher\SlimeRancher_Data\Managed\UnityEngine.PhysicsModule.dll
False
- C:\Program Files (x86)\Steam\steamapps\common\Slime Rancher\SlimeRancher_Data\Managed\UnityEngine.TextCoreModule.dll
+ C:\Program Files\Epic Games\SlimeRancher\SlimeRancher_Data\Managed\UnityEngine.TextCoreModule.dll
False
- C:\Program Files (x86)\Steam\steamapps\common\Slime Rancher\SlimeRancher_Data\Managed\UnityEngine.TextRenderingModule.dll
+ C:\Program Files\Epic Games\SlimeRancher\SlimeRancher_Data\Managed\UnityEngine.TextRenderingModule.dll
- C:\Program Files (x86)\Steam\steamapps\common\Slime Rancher\SlimeRancher_Data\Managed\UnityEngine.UI.dll
+ C:\Program Files\Epic Games\SlimeRancher\SlimeRancher_Data\Managed\UnityEngine.UI.dll
- C:\Program Files (x86)\Steam\steamapps\common\Slime Rancher\SlimeRancher_Data\Managed\UnityEngine.UIModule.dll
+ C:\Program Files\Epic Games\SlimeRancher\SlimeRancher_Data\Managed\UnityEngine.UIModule.dll