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. Mildly Documented
Date uploaded | 3 years ago |
Version | 0.9.0 |
Download link | Nebby-VarianceAPI-0.9.0.zip |
Downloads | 4442 |
Dependency string | Nebby-VarianceAPI-0.9.0 |
This mod requires the following mods to function
RiskofThunder-R2API_Prefab
API for Prefab creation, networking and duplication
Preferred version: 1.0.4TeamMoonstorm-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: 2.1.0README
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!
-
###Documentation
-
VarianceAPI is in the process of being documented extensively with how it works, its scriptable objects and its modular classes.
-
Currently the GithubWiki contains documentation on the ScriptableObjects VarianceAPI has.
The Wiki can be found here
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
-
LightRendererInfos replacements
-
The Ability to use Equipments
-
Can spawn with Buffs/Debuffs
-
Complex MeshSwaps
-
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.
Intrinsic Items for Variants
-
VarianceAPI comes bundled with KomradeSpectre's ItemModCreationBoilerplate.
-
Due to this, 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 this item, and they should never appear in a normal run (if otherwise please contact me!)
-
These items are...
VAPI_GlobalCDR: Reduces all cooldowns by 1% linearly per stack VAPI_PrimaryCDR: Reduces the Primary's cooldown by 1% linearly per stack VAPI_SecondaryCDR: Reduces the Secondary's cooldown by 1% linearly per stack VAPI_UtilityCDR: Reduces the Utility's cooldown by 1% linearly per stack VAPI_SpecialCDR: Reduces the Special's cooldown by 1% linearly per stack VAPI_ExtraPrimary: Adds an extra primary use per stack VAPI_ExtraSecondary: Adds an extra secondary use per stack VAPI_ExtraUtility: Adds an extra utility use per stack VAPI_ExtraSpecial: Adds an extra utility use per stack VAPI_PurpleHealthbar: Makes the healthbar purple, automatically given to any variant who's tier is Uncommon or higher. VAPI_Plus1Crit: Increases critical strike chance by 1% per stack linearly.
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!)
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!)
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!)
-
Bellow is a list of community made VariantPacks
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
- Continue development of the API
Changelog
'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
CHANGELOG
'2.2.0' - Variants of the Storm
- Updated to unity 2021.3.33
- Updated to Seekers of the Storm version of the game
- Variant commands now get the variant defs directly from their providers
- Overall reduced the item reward chance of all variant VariantTiers
- VariantTiers now give Armor to bodies, the rarer the variant the more armor.
- this armor bonus stacks when variants are overlapping
- Fixed inconsistencies with the RuleBook additions
- Fixed Expansion Defs tied to VariantSpawnConditions not working properly
- VariantDefs can now specify a BaseAI Vector Aim damp modifier.
- Added a small API for handling Gup death states.
'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 aDeathRewards
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.
- VariantInfo:
- 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)
- Inventories are no longer an Array of ItemInfos, instead, inventories are stored in the VariantInventory scriptable object.
'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.
- Works by loading all the "incomplete" VariantMaterialReplacements in your 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.
- VariantConfig allows you to:
-
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