You are viewing a potentially older version of this package. View all versions.
Nebby-VarianceAPI-1.1.1 icon

VarianceAPI

VarianceAPI, Major Rewrite, Easier to use, More customizable. Now properly networked!

Date uploaded 2 years ago
Version 1.1.1
Download link Nebby-VarianceAPI-1.1.1.zip
Downloads 9422
Dependency string Nebby-VarianceAPI-1.1.1

This mod requires the following mods to function

TeamMoonstorm-MoonstormSharedUtils-1.3.0 icon
TeamMoonstorm-MoonstormSharedUtils

An API focused with the intention of working in an editor enviroment using ThunderKit, MSU is a modular API system designed for ease of use and simplicity.

Preferred version: 1.3.0
RiskofThunder-R2API_Rulebook-1.0.0 icon
RiskofThunder-R2API_Rulebook

API for registering rules to the Rule Catalog

Preferred version: 1.0.0

README

VarianceAPI

  • 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.

Features

Thunderkit Ease of Development.


  • 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.

  • Easily create Variants using a Single scriptable object! No longer do you need 4 to make a simple Variant. Thanks to FixPluginsTypeSerialization mod, VariantInfo now uses structs! allowing for a more smooth experience.

  • 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.

Documentation


  • 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.

Better Variant Overlapping 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 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.

    • Each Variant can either add Suffixes, Prefixes or Completely override an enemy's name. this allows you to easily identify a Variant on the spot by pinging, and getting an idea in your head on what they can do.

    • Since version 1.0, Variant name overrides expects a Language token.

New VariantSpawnHandler component.


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.

New Improved VariantHandler component


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

VariantRewardHandler component.


  • 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.

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.

  • It also comes with an Artifact Code for use with ArtifactCodeAPI. the code can be found here

Intrinsic Items for Variants


  • 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

Console Commands


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.

Official Variant Packs (Variant Packs made by Nebby)

The Original 30

  • 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!)

TO30 Icon

Nebby's Wrath

  • 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!)

NW Icon

Nebby's New Friends

  • 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!)

[REDACTED]

  • Bellow is a list of community made VariantPacks


Official Nebby's Mods discord server.

  • If you wish to contact me about my risk of rain mods, you can do so here in this Discord server.

https://discord.gg/kWn8T4fM5W


Special thanks.

  • 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.

Changelog

'1.1.1' - Too tired

  • Fixed a null ref exception caused by a mistake in the spawn handler.

'1.1.0' - Bugfixing Galore

  • Updated Website

  • VariantSpawnHandler:

    • Rewritten from the ground up with networking in mind
    • Fixed an issue where the handler would assign wrong variant infos, potentially causing certain variants to "ignore" their spawn rates or certain variants being incredibly common.
    • VariantInfos array is now get, internal set.
    • Added a bool called "customSpawning". setting this to true will return the moment Start() runs.
    • This can be used to later set specific variantInfos for specific spawning of variants on entity states.
  • VariantHandler

    • NetworkServer.Active checks to avoid clogging the client's log with messages regarding client trying to run server only code.
    • This check includes a check on setting the variant back to max health. clients running this line of code caused the variants on their side to have its hurtboxes destroyed.
    • (Basically, Variants should no longer be immune to clients and only take damage from host's attacks / projectiles)
    • Added a config option to enable/disable variant arrival announcements.
    • No longer merges all the variantInfos. this is done to avoid any kind of issue regarding merging.
  • VariantRegister

    • Variant register now sends a message to the log when its material dictionary or registered variants dictionary is empty. saying that no changes will be made

'1.0.0' - First Complete Release

  • Complete rewrite of the variants system.

  • Deprecated the following scriptable objects.

    • Custom Variant Reward
    • Equipment Info
    • BuffInfo
    • VariantConfig
    • Variant Extra Component
    • Variant Info (Old)
    • Variant Inventory
    • Variant Light Replacement
    • Variant Material Replacement
    • Variant Mesh Replacement
    • Variant Override Name
    • Variant Skill Replacement
  • Added new Scriptable objects to replace the old ones

    • VariantInfo:
      • Variant Override Names are now stored directly here, as an Array Struct.
      • Variant Override names now expect a language token.
      • _
      • Variant Skill Replacements are now stored directly here, as an Array Structs.
      • _
      • Variant Extra Components are now stored directly here, as an Array Struct.
      • Component is now a Serializable Variant Component Type (The component's fully qualified name)
      • Components can now be added to the Master, Body or Model game objects.
      • the Spawn rate and the IsUnique configs are made directly with the information inside the Variant Info.
      • Arrival messages now expect a languafge token
      • Death state replacements now are Serializable Entity State Type.
    • VariantInventoryInfo:
      • Merge of BuffInfo, EquipmentInfo and VariantInventory scriptable objects.
      • Variant item inventories are now a struct of string (itemDef name) and int (amount)
      • VariantBuffs are now a struct of string (buff def name), float (time, setting this to 0 makes it permanent) and int (amount)
      • EquipmentInfo is unchanged, still made with just an Equipment string and Animation curve.
    • VariantVisualModifier
      • Merge of VariantLightReplacement, MaterialReplacement and MeshReplacement
      • Each of these are held as an array of struct.
      • Light replacements can now change the type of light.
  • Deprecated the original VariantHandler component, split the spawning logic into VariantSpawnHandler.
  • Deprecated VariantInfoHandler, replaced by VariantRegister.
  • Deprecated VariantMaterialGrabber, replaced by a new version with the same name
  • Added icons for the Items
  • Added Console Commands
  • Prolly a lot of things I Forgot

(Pre 1.0.0 changelog can be found here)

CHANGELOG

Changelog

'2.1.3' - Health Fix Thingy

  • Fixes issue where certain mod interactions would cause monsters to gain the health boost, but not spawn with max health.

'2.1.2' - I think i'll just start meme-ing on these names unless i have a good name

  • Fixed an issue where a spawn rate of 0 would cause a failure on filtering variants.

'2.1.1' - I LOVE READMES!!!

  • Fixed readme

'2.1.0' - I dont know what to write here this time

  • Added a VariantDirectorSpawnRequest which can be used for spawning Variants the same way you'd spawn enemies using DirectorSpawnRequests.
  • Fixed an issue where disabling a VariantPack won't stop variants from said pack from spawning
  • Disabling a VariantPack hides all the Variants related to it in the lobby.
  • Fixed some bugs regarding null reference exceptions in BodyVariantManagers and BodyVariantRewards
  • VariantDirectorSpawnRequest & VariantSummon can now pass on a DeathRewards and a float value for determining XP and Gold rewards from spawned variants.
  • Fixed an issue where having a VariantSpawnCondition would cause null entries on required unlockables, making the variant impossible to encounter.
  • Variants which spawn rate is 0 won't show up in the lobby rules panel
  • Added back a config for enabling or disabling variant arrival messages

'2.0.2' - More Fixes

  • Fixed an issue where Variants wouldnt drop the correct amount of gold and experience
  • Setting a Skill Replacement's skill def to none sets the skill locator's skillDef to a special, "DoNothing" skill
  • Removed some redundant logging that are now behing building the mod in debug mode

'2.0.1' - Oops releases are my favorite kind of release

  • Fixed some typos in Config descriptions and names
  • The api no longer hard crashes the game

'2.0.0' - Variants of the Void

  • Major rewrite to the codebase
  • This changelog is probably missing a LOT of changes, below are the most important ones
  • Removed the following classes:
    • VariantSpawnHandler, replaced by the VariantSpawnManager
    • VariantRewardHandler, replaced by the BodyVariantReward
    • VariantHandler, replaced by BodyVariantManager
    • VariantRegister, replaced by the VariantCatalog
    • VariantMaterialGrabber, replaced by MSU's AddressableMaterialShader
  • Added the following classes:
    • VariantCatalog - Catalog system for VariantDefs
    • VariantTierCatalog - Catalog system for VariantTierDefs
    • VariantPackCatalog - Catalog system for VariantPackDefs
    • VariantSpawnCondition - A criteria that need to be met for a variant to spawn
    • VariantPackDef - Similar to a ContentPack, a VariantPackDef contains the Variants to add
    • VariantTierDef - A ScriptableObject for defining VariantTiers, you're supposed to inherit from it
    • VariantSummon - Extended version of a MasterSummon that allows you to control the spawning of a variant
    • VariantRewardInfo - The types of rewards for a variant, you're supposed to inherit from it
    • BodyVariantDefProvider - The variants for a specific body are now specified in these classes.
  • Variants are now applied on Start instead of Awake, which allows you to modify a spawned enemy to ensure a variant
  • Added Rulebook support to Variants
  • Made VAPI dependant on MSU, as a lot of the systems VAPI had are also in MSU, and for using the AddressableAssets systems in said API

'1.1.2' - Not dead yet

  • Fixed a bug where the "EnableVariantArrivalAnnouncements" configuration wouldnt actually disable variant announcements when set to false.
  • Fixed a bug where disabling the rewards system would cause the game to hang at startup.
  • Removed a dumb stupid debug.Log() that would run each time a variant spawned.
  • Removed an unused interface (IOnIncomingDamageOtherReciever) that was causing issues with MSU due to using an ILHook that pointed to the same stack.
  • Changed some of the debug log messages in Variantregister's methods. your console should be cleaner now.

'1.1.1' - Too tired

  • Fixed a null ref exception caused by a mistake in the spawn handler.

'1.1.0' - Bugfixing Galore

  • Updated Website

  • VariantSpawnHandler:

    • Rewritten from the ground up with networking in mind
    • Fixed an issue where the handler would assign wrong variant infos, potentially causing certain variants to "ignore" their spawn rates or certain variants being incredibly common.
    • VariantInfos array is now get, internal set.
    • Added a bool called "customSpawning". setting this to true will return the moment Start() runs.
    • This can be used to later set specific variantInfos for specific spawning of variants on entity states.
  • VariantHandler

    • NetworkServer.Active checks to avoid clogging the client's log with messages regarding client trying to run server only code.
    • This check includes a check on setting the variant back to max health. clients running this line of code caused the variants on their side to have its hurtboxes destroyed.
    • (Basically, Variants should no longer be immune to clients and only take damage from host's attacks / projectiles)
    • Added a config option to enable/disable variant arrival announcements.
    • No longer merges all the variantInfos. this is done to avoid any kind of issue regarding merging.
  • VariantRegister

    • Variant register now sends a message to the log when its material dictionary or registered variants dictionary is empty. saying that no changes will be made

'1.0.0' - First Complete Release

  • Complete rewrite of the variants system.

  • Deprecated the following scriptable objects.

    • Custom Variant Reward
    • Equipment Info
    • BuffInfo
    • VariantConfig
    • Variant Extra Component
    • Variant Info (Old)
    • Variant Inventory
    • Variant Light Replacement
    • Variant Material Replacement
    • Variant Mesh Replacement
    • Variant Override Name
    • Variant Skill Replacement
  • Added new Scriptable objects to replace the old ones
    • VariantInfo:
      • Variant Override Names are now stored directly here, as an Array Struct.
      • Variant Override names now expect a language token.
      • Variant Skill Replacements are now stored directly here, as an Array Structs.
      • Variant Extra Components are now stored directly here, as an Array Struct.
      • Component is now a Serializable Variant Component Type (The component's fully qualified name)
      • Components can now be added to the Master, Body or Model game objects.
      • the Spawn rate and the IsUnique configs are made directly with the information inside the Variant Info.
      • Arrival messages now expect a languafge token
      • Death state replacements now are Serializable Entity State Type.
    • VariantInventoryInfo:
      • Merge of BuffInfo, EquipmentInfo and VariantInventory scriptable objects.
      • Variant item inventories are now a struct of string (itemDef name) and int (amount)
      • VariantBuffs are now a struct of string (buff def name), float (time, setting this to 0 makes it permanent) and int (amount)
      • EquipmentInfo is unchanged, still made with just an Equipment string and Animation curve.
    • VariantVisualModifier
      • Merge of VariantLightReplacement, MaterialReplacement and MeshReplacement
      • Each of these are held as an array of struct.
      • Light replacements can now change the type of light.
  • Deprecated the original VariantHandler component, split the spawning logic into VariantSpawnHandler.
  • Deprecated VariantInfoHandler, replaced by VariantRegister.
  • Deprecated VariantMaterialGrabber, replaced by a new version with the same name
  • Added icons for the Items
  • Added Console Commands
  • Prolly a lot of things I Forgot

'0.9.0'

  • Changes to VariantInfo & Variant Handler:

    • VariantInfos with no VariantConfig assigned now properly register instead of crashing the mod
    • Enabled VariantMeshReplacements. Currently undocumented, guide will appear eventually since theyre difficult to implement.
    • Enabled VariantBuffs.
      • Variants can be given a buff when they spawn.
      • Buff can be permanent, or expiring on a timer.
    • SpawnRate and IsUnique are now hidden from the inspector when using unity, since theyre set on the VariantConfig.
    • Arrival Messages now apply for both Rare and Legendary variants.
      • If no custom arrival message is given, it uses a generic spawn string.
    • The VariantHandler component now catches when certain mistakes happens and lets you know on the console screen
    • Moved basically all the code from start to its separate method, so it can be called from other places.
  • Changes to CustomVariantReward & VariantRewardHandler

    • Cleaned up code
    • Added ItemList for VariantRewardHandler
      • Custom variant reward now can specify what items can be droped from a variant.
  • Changes to VariantBuff:

    • VariantBuff now actually works
    • Variants can now be given a buff that lasts permanently, or lasts a certain amount of time
  • Changes to VariantHandler component:

    • The component now catches when certain mistakes happens and lets you know on the Console screen.
  • Legendary Variant's XP Multiplier is now configurable.

  • Fixed bugs that would cause VariantHandler components to be in certain character mods. such as Playable Templar or Tymmey's Lemurian/Imp/Exploder

  • Added MeshType Enum, used on Mesh Replacements

  • Added Documentation on ScriptableObjects in the Github's Wiki.

'0.8.0'

  • Added Functionality to Legendary Variants (They'll announce their arrival in Chat.)

  • Fixed bug that caused Variants with no VariantInventory to not recieve their purple healthbar if the tier was greater than common.

  • Added Support for Modded Variants.

    • VariantConfig now has modGUID string.
    • This string MUST match the mod's internal GUID.
  • VariantInfoHandler now has a failsafe when you attempt to add a Variant without the mod installed.

  • Removed completely ItemInfos

'0.7.1'

  • Changed how inventories work.
    • Inventories are no longer an Array of ItemInfos, instead, inventories are stored in the VariantInventory scriptable object.
      • a VariantInventory scriptable object consists of a itemStrings array, and an itemCount array.
      • The itemString's index must match the itemCount's index.
      • The lengths of both arrays MUST be the same.
    • Removed helpers that created ItemInfo Arrays, new helpers comming soon.
    • Due to this switch, ItemInfo[] is deprecated, but it will remain in VariantInfo so that people can switch to the VariantInventory scriptable Object.
    • ItemInfo will be removed on the next major update (0.8.0)

'0.7.0'

  • Added PrefabBase, a very simple prefab creation system used for creating Projectiles based off existing ones.

  • Added missing R2API Submodule dependencies.

  • Changes to the VariantInfo scriptable Object:

    • usesEquipment no longer exists.
  • Internal changes to how VariantHandler is structured.

  • Added a new Component, VariantEquipmentHandler.

    • Component is added automatically to the Variant when it detects that EquipmentInfo has an Equipment and is not null.
    • Component is used for Variants so they can use Equipment.
    • How the variant uses the Equipment is based off an Animation Curve
    • Special Thanks to TheMysticSword, since he helped me in using the AnimationCurve and most of the code is based off his code from AspectAbilities
  • Changes to the EquipmentInfo scriptable object:

    • Now requires an AnimationCurve which tells when to use the Equipment.

'0.6.0'

  • Added missing methods for Helpers.cs

    • Added method for creating VariantOverrideNames
    • Added methods for creating CustomVariantRewards
  • Added the first iteration of the MyVariantPack boilerplate

    • Boilerplate is installed thru a unity package that you can install when youre developping in Thunderkit
    • Boilerplate code fully documented.
    • Boilerplate includes the following examples:
      • Creation of a Variant in code
      • Creating a Variant in Thunderkit
      • Communicating with VarianceAPI
      • Using the VariantInfoHandler to register variants
      • Using the VariantMaterialGrabber to grab vanilla materials.
  • All logger messages now use the Bepinex Logger instead of the Unity Logger.

  • Added KomradeSpectre's ItemModCreationBoilerplate to VarianceAPI.

    • Added a version for creating items in thunderkit, alongside the default one that uses R2API.
    • As listed above, VarianceAPI comes now with Intrinsic variant items that are used in VariantCreation
  • Fixed the VariantRewardHandler not being as close as possible as the original rewards system

  • Added the Ability to replace Light colors in BaseLightRenderer infos of a CharacterModel.

  • Changed config creation process, only the section version.

    • Now each config section follows the following format: *variantInfo.bodyName + " variants"
  • Uncommon Variants now use a Purple healthbar instead of a Red healthbar thanks to the new intrinsic items.

'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