

A complete Rewrite of Rob's original MonsterVariants concept.
VarianceAPI aims to combine the Variants 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.
After being in development for a few months, VarianceAPI has now released its 1.0 version, including greatly different Workflow with less editor clutter and more smooth experience. For both variant creators and players alike.
VarianceAPI was made with Thunderkit in mind, and a lot of its code has been written to be used inside it. (Scriptable objects, editor only code, SO in Assetbundles, etc.) As such, it is extremely recommended to use Thunderkit when developing VariantPacks
Despite this, Variants can still be added via code. Sadly there is no longer a class for making Scriptable objects and helpers in code, this is mainly due to difficulties testing said methods due to myself prefering to work in Thunderkit. However, Anyone is free to create their own methods to make these, and if you'd like, you can even send the class my way and I'll gladly add it to the official DLL.


Register your Variants easily now by accesing the VariantRegister static class! no longer do you need to do some black magic bullshit to register your variants, simply access the class and give it your AssetBundle or a List with VariantInfos. Give it your mod's ConfigFile and it'll automatically create Config for each variant's spawn rate and wether theyre Unique or not.
VarianceAPI.VariantRegister.AddVariant(nebbysWrathAssets, Config);
The same applies now to the VariantMaterialGrabber, you can no longer inherit from it but now its static, and all you need to do is give it a List with a tuple for the identifier, and the material itself! an example can be found here
Oh, did i forget to mention that The Variant Register now Registers Variants when the Game Loads, And that the IsUnique mechanic now properly works? No more shall a playable monster suddenly turn into a variant or isUnique not work anymore!
Also, VarianceAPI now comes with the VAPIEditor assembly. an Editor only assembly that, when loaded into thunderkit, will modify your editor for ease of use on creating variants. including:
A custom Drawer for entity states made by KevinFromHPCustomerService
A custom Drawer for VariantComponents.
A migrator tool that'll easily let you migrate from the old scriptable object system to the new one.
A lot of internal changes have been done to VarianceAPI on the 1.0.0 update, as such, most of the documentation found in the Github's wiki page no longer holds true.
Nebby is hard at work writing the new documentation of the scriptable objects.
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 determines wether the variant can participate in VariantOverlapping shenanigans.
The IsUnique boolean is part of the ConfigFile, just set it to true if you dont want this feature with a specific variant.


All the logic behind how Variants spawns have been re-written into the VariantSpawnHandler component. thanks to this separate component calculating the variants spawned, now the IsUnique system properly works. by first rolling for weighted unique variant infos, and then rolling for the not unique ones.
After the variants have been chosen, the Spawn handler gives the enabled infos to the variant handler component and the variant reward handler component, and runs Modify(). officially turning the body into a variant.
Now a single VariantHandler component exists per variant. the component calculates the new stats, skills, materials, size all in the spot depending on what VariantInfos are fed thru.
Variants made in VarianceAPI have:
All the original features of the VariantHandler component, alongside...
Custom name prefixes and suffixes
New Tiers
Ability to add Completely custom Components to the model, body, or master.
DeathState replacements
LightRendererInfos replacements
The Ability to use Equipments
Can spawn with Buffs/Debuffs
Complex MeshSwaps
All of MonsterVariantsPlus's Rewards systems are now handled by this component that's added to each body on load time.
Only one VariantRewardHandler component is given to each variant. The mod automatically calculates the new rewards by the VariantInfos given by the VariantSpawnHandler component.
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.
It also comes with an Artifact Code for use with ArtifactCodeAPI. the code can be found here
VarianceAPI comes bundled with Intrinsic items that've been created for exclusive use for Variants.
These items are AI Blacklisted, meaning that Enemies in the void fields will never get these items, and they should never appear in a normal run (if otherwise please contact me!)
These items are...
GlobalCDR: Reduces all cooldowns by 1% linearly per stack
PrimaryCDR: Reduces the Primary's cooldown by 1% linearly per stack
SecondaryCDR: Reduces the Secondary's cooldown by 1% linearly per stack
UtilityCDR: Reduces the Utility's cooldown by 1% linearly per stack
SpecialCDR: Reduces the Special's cooldown by 1% linearly per stack
ExtraPrimary: Adds an extra primary use per stack
ExtraSecondary: Adds an extra secondary use per stack
ExtraUtility: Adds an extra utility use per stack
ExtraSpecial: Adds an extra utility use per stack
PurpleHealthbar: Makes the healthbar purple, automatically given to any variant who's tier is Uncommon or higher.
Plus1Crit: Increases critical strike chance by 1% per stack linearly.
These items now come with icons to easily identify them on the spot, the icon textures where made by Wonda, publisher of Refightilization

If you have DebugToolKit Installed, you'll have access to developer commands for testing out variants. these commands are:
list_modified_bodies. Lists all the bodies that have variants.
list_variants_from_body. Lists all the variantInfos that are inside a body, gives out the VariantInfo's name alongside the identifier.
Argument 1: The internal name of the body prefab
spawn_variant. Spawns an enemy with the desired variantInfos attached. to get the possible variantInfos, use the command *list_variants_from_body.
Argument 1: The internal name of the characterBody's master prefab.
Argument 2 - Infinity: The VariantInfos to use. must be the VariantInfo's identifier.
spawn_as_variants. Spawns the person who wrote the command as a desired variant. to get the possible variantInfos, use the command list_variants_from_body
Argument 1: The internal name of the body prefab.
Argument 2 - Infinity: The VariantInfos to use. must be the Variantinfo's identifier.
The original 30 is a complete port of Rob's 30 original MonsterVariants.
The original 30 includes QoL changes to variants, such as using VarianceAPI's intrinsic items, and having new features such as slight rebalancing and better override names.
Get it here! (just click the icon!)
Nebby's Wrath is a complete port of all the non-"OtherVariants" of MonsterVariantsPlus.
All the non "OtherVariants" encompass all variants except the ones for Squid Turrets, Empathy Cores & the Beetle Guards from the Queen's Gland.
Get it here! (just click the icon!)
Nebby's New Friends is a complete port of all the "OtherVariants" of MonsterVariantsPlus
Currently the pack is nonexistent, but it will eventually come out.
Get it here! (just click the icon!)
Bellow is a list of community made VariantPacks
Kevin for the EntityStateDrawer, which was used as a base for the component drawer. (And making me not use thunderkit like an ape)
IDeathHD and Harb, for making DebugToolkit and it's spawn_ai and spawn_as commands (used for the spawn_variant and spawn_as_variant)
IDeathHD for helping me point towards a general direction with networking.
Aaron, Gaforb, "come on and SLAM", & especially TheTimeSweeper Love you habibi for helping me with networking issues.
Aaron for creating a weighted selection for the Unique variants.
Dotflare for making the Variance artifact token and other tidbits from the official variant packs.
Twiner for Thunderkit and helping me a lot with certain editor scripts.
Rob for creating MonsterVariants.
Updated Website
VariantSpawnHandler:
VariantHandler
VariantRegister
Complete rewrite of the variants system.
Deprecated the following scriptable objects.
Added new Scriptable objects to replace the old ones
(Pre 1.0.0 changelog can be found here)