

Extends Mycologists functionality to allow non-duplicate merges and unique merge results. Supports use by other mods including JSONCardLoader.
Simply install if you're not making new cards or mods. If you are, see below.
MergerManager class to do:MergerManager.AddMergeData("SourceCardName", "TargetCardName", "Result")MergeInheritance for a merge using:MergerManager.AddMergeData("SourceCardName", "TargetCardName", "Result", "MergeInheritance")SourceCardInfo.SetExtendedProperty("MycoMerger", "TargetCardName1:Result1, TargetCardName2:Result2:MergeInheritance … " )SourceCardInfo can be retrieved with CardLoader.GetCardByName("SourceCardName").SourceCard already has MycoMerger data as using SetExtendedProperty will overwrite that data. You can retrieve that data using SourceCardInfo.GetExtendedProperty("MycoMerger") and check if any data exists using string.IsNullOrWhiteSpace. You can append any new data with string.Concat(ExistingMycomergerData, ",", "AdditionalMycomergerData") before using that to set the extended property but beware duplicate TargetCardName entries..jldr2 file, add an entry to its extensionProperties with the following format: "extensionProperties": { "MycoMerger": "[MERGEDATA]" }."extensionProperties": { "Property1": "Value1", "Property2": "Value2", "MycoMerger": "[MERGEDATA]" }.[MERGEDATA] is composed of the following: TargetCard:Result with each entry separated by commas. Spaces between don't matter. Example: Packrat:Cat, FieldMouse : FieldMouse.MergeInheritance can be specified by adding another colon : and a plus sign + if there is more than one keyword. See References further below. Example:Packrat:Cat:UserDefault, FieldMouse : FieldMouse : Attack + Health.!RESULT!:SourceCard:TargetCard.!RESULT! means this card is the result of the merge of two other cards. This MergeData is then assigned to the SourceCard. This is mostly meant for making a new card using jldr2 the result of a merge without needing to make files for or edit other cards. This means that if you're making a new card and use this format, it's equivalent to adding this merge data in SourceCard: TargetCard:NewCard."extensionProperties": { "MycoMerger": "FieldMouse:SporeMouse" }!RESULT! in SporeMouse.jldr2:"extensionProperties": { "MycoMerger": "!RESULT!:FieldMouse:FieldMouse" }MergeInheritance in Stoat.jldr2:"extensionProperties": { "MycoMerger": "Burrow:Rabbit:None" }"extensionProperties": {
"OtherProperty1": "OtherValue1",
"MycoMerger": "!RESULT!:FieldMouse:FieldMouse,
!RESULT!:PackRat:PackRat:UserDefault,
!RESULT! : FieldMouse : PackRat : Attack+Health+AddedSigils, !RESULT!: RatKing :FieldMouse,
PackRat:RatKing:Vanilla, Hodag:MycoMerger_TotalStats:All
RatKing:RatEmperor",
"OtherProperty2: "OtherValue2" }
SourceCard just means the card where the merge data is stored.TargetCard is the card targeted for the merge from the SourceCard.Result is either another card or a MergeResult that determines which between the two cards used in the merge should be the result. It can also have a MergeInheritance specified.MergeResult is a special Result that chooses between the two cards used in the merge to be the result based on certain criteria. UserDefault can be used, which is TotalStats by default. See References further below.MergeInheritance specifies what is inherited by the Result. Vanilla inheritance is Attack+Health+AddedSigils. When not specified, uses UserDefault which is Vanilla by default. See References further below.!RESULT! formatting is applicable for all use but is mostly meant for jldr2 files (see the 'With JSON Loader (jldr2)' section).DefaultMergeInheritance to All or specifying BaseSigils as a MergeInheritance flag in merge data.You can adjust the mod's configuration using your mod manager's Config editor or by manually editing the rykedaxter.inscryption.mycologistsmerger.cfg file in /Bepinex/config.
You can use the Thunderstore, r2modman, or another compatible mod manager to automatically install this mod from the Thunderstore page.
You can manually install this mod by downloading the dll from the Thunderstore page or the latest Github release then placing MycoMerger.dll into /BepInEx/plugins assuming you have already installed the required dependencies (BepInEx-BepInExPack_Inscryption and API_dev-API). For instructions on how to install these dependencies, please refer to their respective pages.
| Section | Key | Default Value | Description |
|---|---|---|---|
| General | MaxAddedSigils | 4 | The maximum number of added abilities the resulting card of a Mycologist merge can have. May be overridden by mods if MaxAddedSigilsOverride is true. |
| General | DefaultMergeResult | TotalStats | Defines the default result of a merge that occurs when the result is not specified. May be overridden by mods if DefaultMergeResultOverride is true. No practical effect in current version. |
| General | DefaultMergeInheritance | Vanilla | Defines the default inheritance the result of a merge receives from the two cards used for it.May be overridden by mods if DefaultMergeInheritanceOverride is true.You can set a combination of Attack, Health, AddedSigils, and BaseSigils using commas (,). (Example: Attack, BaseSigils) |
| Overrides | MaxAddedSigilsOverride | True | Allow mods to override your personal MaxAddedSigils setting when true. If false, always use your MaxAddedSigils setting. |
| Overrides | DefaultMergeResultOverride | True | Allow mods to override your personal DefaultMergeResult setting when true. If false, always use your DefaultMergeResult setting. |
| Overrides | DefaultMergeInheritanceOverride | True | Allow mods to override your personal DefaultMergeInheritance setting when true. If false, always use your DefaultMergeResult setting. |
You can specify these keywords instead of a card name for the merge result in order to dynamically choose which between the two cards involved in the merge will be the result. When no merge data is associated with a merge, UserDefault will typically be used to define the result. In the case of a tie, the result is equivalent to SourceCard.
Additionally, when both cards contain valid merge data targeting the other yet specify different results then the result of the merge is chosen randomly between them.
| Name | Result of Merge |
|---|---|
| MycoMerger_SourceCard | The card containing the merge data used or the left/first card, which is usually the source card, when neither card has valid merge data. |
| MycoMerger_UserDefault | Uses the player's DefaultMergeResult setting to define the result of the merge. That setting is one of the other constants in this table and if DefaultMergeResult is also UserDefault, then the result is equal to SourceCard. |
| MycoMerger_Random | Randomly choose between the two cards used in the merge to be the result. |
| MycoMerger_NumSigils | The card with the higher total number of sigils is the result. |
| MycoMerger_NumBaseSigils | The card with the higher total of base or default sigils, not including modified sigils, is the result. |
| MycoMerger_Attack | The card with the higher attack is the result. Special Stat Icons are always counted as 1 Attack. |
| MycoMerger_Health | The card with the higher health is the result. |
| MycoMerger_TotalStats | The card with the higher health and attack added together, including the Special Stat Icon, is the result. |
| MycoMerger_PowerLevel | (Attack + Special Stat Icon Value)*2 + Health + Total Sigil Power Level |
Determines what will be inherited by the result card of the merge.
You can specify these keywords in the merge data to define inheritance behavior (see How to Use for more information). UserDefault will be used to define the inheritance when there is no specific inheritance defined.
In code, flags can be added together using the | operator: MergeInheritance Vanilla = MergeInheritance.Attack | MergeInheritance.Health | MergeInheritance.AddedSigils
Their .ToString() representation separates flags using a comma , which is used in the Configuration but inside merge data as a string, which is also for .jldr2, use a plus (+) instead:
Attack+Health+AddedSigils
| Name | Inherited |
|---|---|
| None | Inherit nothing, just give the result card. |
| UserDefault | Uses the player's DefaultMergeInheritance setting. That setting is one of the other constants in this table and if DefaultMergeInheritance is also UserDefault, then it uses Vanilla. |
| Attack | Inherit combined attack minus result card's base attack. If combined attack is lower, use result card's base attack. |
| Health | Inherit combined health minus result card's base health. If combined health is lower, use result card's base health. |
| AddedSigils | Inherit the modified or added sigils from the merging cards. |
| BaseSigils | Inherit the base sigils of the merging cards, inherited first before AddedSigils which is relevant based on the user's maximum number of sigils. |
| Vanilla | Equivalent to Attack + Health + AddedSigils. |
| Stats | Equivalent to Attack + Health. |
| AllSigils | Equivalent to AddedSigils + BaseSigils. |
| All | Equivalent to Attack + Health + AddedSigils + BaseSigils. |
I'm not actively working on this anymore except for maintenance and bug fixes.
This is mostly complete except for one feature that would allow for any two cards to be merged with a selection sequence similar to the the mysterious stones sacrifice event. However, that requires Unity asset editing and problem solving which I am unable to do. If you're able to solve this and are interested in contributing, please contact me.
It would modify the Mycologists Event (DuplicateMerge) to function similarly to the Ritual Stones Event (CardMerge) where there are two selectable slots and selecting one allows you to choose any card from your deck, thus enabling you to merge any two cards.
It involves modifying GameTable/SpecialNodeHandler/DuplicateMerger/LargeMushroom/Anim/RitualStone to have two of SelectionSlot or adding something similar from the CardMerge event that has GameTable/SpecialNodeHandler/CardMerger/StoneCircle/Back Rock/HostSlot and GameTable/SpecialNodeHandler/CardMerger/StoneCircle/RitualStone/SacrificeSlot to the DuplicateMerger event.
The logic for the feature is already implemented (DefaultMergeResult).
If you find an issue or have suggestions, please feel free to contact me on the Inscryption Modding Discord or create an Issue on the Github repository.
This mod created by RykeDaxter.