Dinorush-ExtraSyringeCustomization icon

ExtraSyringeCustomization

Allows for Rundown Developers to add new syringes. Should now support syringes with multiple uses.

Last updated 7 hours ago
Total downloads 2
Total rating 0 
Categories
Dependency string Dinorush-ExtraSyringeCustomization-0.3.11
Dependants 0 other packages depend on this package

This mod requires the following mods to function

BepInEx-BepInExPack_GTFO-3.2.1 icon
BepInEx-BepInExPack_GTFO

BepInEx pack for GTFO. Preconfigured and includes Unity Base DLLs.

Preferred version: 3.2.1
Dinorush-ModifierAPI-1.2.0 icon
Dinorush-ModifierAPI

API for plugin developers to modify certain values without conflicts.

Preferred version: 1.2.0

README

NOTICE: THIS IS AN ALPHA RELEASE. EXPECT BUGS AND CHANGES

A tool for creating custom syringes, and applying custom effects.

Example Config:

{
    "Syringes": [
        {
            "SyringeID": 140,
            "Properties": {
                "MovementMultiplier": {
                    "Delay": {
                        "HasDelay": true,
                        "Min": 2.5,
                        "Max": 2.5
                    },
                    "Time": {
                        "Min": 10,
                        "Max": 10
                    },
                    "Min": 1.5,
                    "Max": 2,
                    "Enabled": true
                },
                "SelfDestruct": {
                    "DelayTime": {
                        "HasDelay": true,
                        "Min": 15,
                        "Max": 15
                    },
                    "Damage": 10000000,
                    "Radius": 12,
                    "Enabled": true
                }
            }
        },
        {
            "SyringeID": 142,
            "Properties": {
                "MovementMultiplier": {
                    "Delay": {
                        "HasDelay": true,
                        "Min": 2.5,
                        "Max": 2.5
                    },
                    "Time": {
                        "Min": 10,
                        "Max": 10
                    },
                    "Min": 1.5,
                    "Max": 2,
                    "Enabled": true
                },
                "SelfDestruct": {
                    "DelayTime": {
                        "HasDelay": true,
                        "Min": 15,
                        "Max": 15
                    },
                    "Damage": 10000000,
                    "Radius": 12,
                    "Enabled": true
                }
            }
        }
    ]
}

For Rundown Developers

On first run, two files will be autogenerated in /Custom/ExtraSyringeCustomization/:

  • GENERATED_example-syringes.json
  • GENERATED_syringe-properties.json

You can delete any of these files to regenerate them.

Both of these will contain examples on how to set up custom syringes.

To create a custom syringe, first create an associated entry in ItemDataBlock.

Then paste the persistentID in the SyringeID field in a new syringe entry.

And then apply your associated affects.

For Plugin Developers

APIs have been exposed for adding your own syringe properties/effects and adding syringes.

All Syringe Properties extend SyringePropertyBase.

An implementation example:

public class SyringeHealEffectProperty : SyringePropertyBase
{
    [JsonIgnore]
    public override string Name => "Heal";
    
    public override void Apply(PlayerAgent player, SyringeFirstPerson syringe, Random random)
    {
        // heal to 100%
        PlayerBackpackManager.PickupHealthRel(1f, player);
    }
}

Then, to register this property, use ExtraSyringeHandler:

ExtraSyringeHandler.AddProperty<SyringeHealEffectProperty>();

Be sure to do this before GameDataInit.Initialize is called, as that's when the custom syringe file is ready.

Now you can include it in your json:

{
    "Syringes": [
        {
            "SyringeID": 140,
            "Properties": {
                // Must match `Name` specified in the property,
                // in this case, "Heal"
                "Heal": {
                    "Enabled": true
                }
            }
        }
    ]
}