
Chance of Water 2
VarianceAPI
A Continuation of Rob's MonsterVariants, VarianceAPI lays down the groundwork for virtually anyone to create their own variants. Now with a proper ReadMe file.Details
Loading...

Loading...
A Complete Re-Write, altho heavily based off Rob's original MonsterVariants code.
VarianceAPI aims to combine the features from MonsterVariants and MonsterVariantsPlus into a single mod.
The API by itself doesnt do much, it only works as a base for others to create their own Variants
VarianceAPI was made with Thunderkit, and it's systems are made to be used with Thunderkit. it is Extremely recommended to use Thunderkit when Developing VariantPacks
Despite this, Variants can still be added via code. Only examples currently lay on the Deprecated ExampleVariantPack. The mod comes with a Helpers.cs class that has methods on creating the ScriptableObjects that VarianceAPI requires


Plus, VarianceAPI contains base classes for easing the creation of variants.
Automatic ConfigCreation using the VariantConfig scriptable object.
Semi-Automatic fetching for Ingame materials, no more AssetBundle bloating!
The confusing and sometimes obscure VariantOverlap system has been expanded and now can be either Avoided, or encouraged.
Each Variant has a Unique boolean, Which determine wether the Variant can participate in VariantOverlapping shenanigans
The IsUnique boolean is part of the ConfigFile, so if you do not want a variant type to overlap with others, it's as simple as setting it to true.


Variants made in VarianceAPI have:
All the original features of the VariantHandler component, alongside...
Custom name prefixes and affixes
Wether the variant gives rewards
Configurable Rewards
New Tiers
Ability to add Completely custom Components
DeathState replacements
Custom Equipment (NYI)
The Ability to use Equipments (NYI)
Can spawn with Buffs/Debuffs (NYI)
All of MonsterVariantsPlus' Rewards systems are now handled by this nifty little component that's added to each Variant that has the "GivesReward" boolean set to true.
Only one VariantRewardHandler component is given to each Variant. the mod does it by checking how many VariantHandler components are active at the time.
Just like in MonsterVariantsPlus, Variants by default now:
Drop extra Gold on death
Drop extra XP on death
Have a chance to drop items, Red, Green or White respectively
Also just like in the original MonsterVariantsPlus, all of the rewards are calculated based off the Variant's Tier, and can be modified
If youre not a fan or rewards, the VariantHandlerReward system can be easily turned off with a simple boolean in VarianceAPI's config file.


The Artifact of Variance, one of the Features from MonsterVariantsPlus, is now a core component of VarianeAPI.
The Artifact of Variance, when enabled, multiplies all Variant's spawn rates by the amount specified in the Config file.
Just like in the Original MonsterVariantsPlus, the Artifact of Variance can be enabled or disabled in the Config file.
The Original 30
The original 30 is a complete port of Rob's 30 original MonsterVariants.
It's incomplete, but currently re-adds some 13! of the Variants
Get it here! (just click the icon!)
Nebby still suggests checking out other VariantPacks made by the community! (Currently none :c)
VarianceAPI related discord server, you can join in here to meet other variant pack creators or learn how to create your own.
Currently barebones, will start getting some love soon
- Use KomradeSpectre's ItemModCreationBoilerplate to create a boilerplate for Variant Items.
* Create said VariantItems so variants dont use Alienheads/Critglasses, and instead use these custom items
- Re-Implement the Artifact of Variance
- Create a system to replace variants' DeathState states.
- Continue development of the API
'0.5.0'
Added back the Artifact of Variance
Fixed issue in VariantHandler causing certain stat multipliers not applying
Added a PreventRecursion system. Variants may not recieve extra Dio's Best Friends when resurrecting.
Added Custom Death States
Custom Death State can be specified in the VariantInfo Scriptable Object.
Leave it null unless you know how to get the required string to make it work.
Removed no longer needed classes
Added an identifier to VariantMaterialReplacement scriptable object.
Added the base class VariantMaterialGrabber.
Works by loading all the "incomplete" VariantMaterialReplacements in your AssetBundle.
Proceeds to then compare the incomplete versions with complete ones made in code. if it matches one, it'll replace the material with the correct one.
TL;DR: This class helps reduce bloated AssetBundle sizes by allowing the player to fetch ingame materials instead of copying them and placing them in their AssetBundle.
'0.4.0'
Changes to the OverrideName system
Added a new enum which enables the OverrideName to completely override the variant's baseName.
System now works with a switch
Renamed overrideOrder to overrideType
Added a new Array in VariantInfo for VariantExtraComponents
Added a new ScriptableObject called VariantExtraComponents.
VariantExtraComponents can be used to add a custom component to a specific variant when it spawns
This component must inherit from the new VariantComponent component found in the api (VariantComponent inherits from MonoBehaviour)
Has the following settings:
- string componentToAdd: The component to add to the Variant. this must be the combination of the Namespace of the component, alongside the class name. For example: TheOriginal30.VariantComponents.AddMissileLauncherToLemurian
- bool isAesthetic: Wether the component to add just adds a mesh to the original body.
- Non aesthetic components support haven't been added yet.
Added discord server to the ReadMe
Hopefully fixed broken icon.
'0.3.0'
All of VarianceAPI's ScriptableObjects have Headers and Tooltips, making it easier to create the objects in the UnityEditor
Complete Rewrite of the Variant Overridename feature. now supporting VariantOverlaps.
Did a Facelift of the Thunderstore page.
'0.2.0'
VariantInfo now contains VariantConfig scriptable object, VariantConfig is used to create the config entries for your Variants.
VariantConfig allows you to:
Set the spawn chance of a Variant.
Wether the variant is unique or not.
Removed VariantRegisterBase
Added VariantInfoHandler, use this now to register your variants, as it streamlines the process.
Added Helpers for creating VariantConfig Scriptable Objects in code, one for Vanilla entities and another one for Modded entities.
'0.1.1'
'0.1.0'
Added the VariantRewardHandler Component, officially porting a good chunk of MonsterVariantPlus' Features.
Added VariantRegisterBase, a helper for easily register variants made in Thunderkit.
Added Config file with a lot of config entries for the VariantRewardHandler and global settings.
Started working on a helper for creating Variant's Spawn Chances via config
Determination++ After learning rob likes what i'm doing.
'0.0.2'
Added Github Link.
Made changes to the scriptable objects, now they can be made in Thunderkit instead of on RunTime.
'0.0.1'