
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
Variance API
-
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
Features
Thunderkit support
-
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
- Easily create Variants using the plethora of ScriptableObjects VarianceAPI has!
-
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!
-
Better VariantOverlapping methods
-
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.
- Each Variant can either add Suffixes or Preffixes to an Enemy, this allows you to easily identify Variants on the spot with a simple ping, and getting an idea in your head on what they can do.
-
New Improved VariantHandler component/Variant Features
-
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)
-
New VariantRewardHandler component.
-
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.
Artifact of Variance
-
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.
Official Variant Packs (Variant Packs made by Nebby)
-
The Original 30
-
The original 30 is a complete port of Rob's 30 original MonsterVariants.
-
It's incomplete, but currently re-adds
some13! of the Variants -
Get it here! (just click the icon!)
-
-
Nebby still suggests checking out other VariantPacks made by the community! (Currently none :c)
Official VarianceAPI discord server.
-
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
Todo's
- 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
Changelog
'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.
- It's main goal is to help with creating VariantMaterials in Thunderkit.
-
Added the base class VariantMaterialGrabber.
-
Works by loading all the "incomplete" VariantMaterialReplacements in your AssetBundle.
- An incomplete VariantMaterialReplacement has it's material set to null, and has it's identifier filled.
-
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.
- Used in TheOriginal30's Badass lemurian to attach the Missile Launcher.
-
-
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'
- Forgot to call the method that makes the config, whoops.
'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'
- Initial Release