You are viewing a potentially older version of this package. View all versions.
Panthr75-ExtraSyringeCustomization-0.3.3 icon

ExtraSyringeCustomization

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

Date uploaded 2 weeks ago
Version 0.3.3
Download link Panthr75-ExtraSyringeCustomization-0.3.3.zip
Downloads 314
Dependency string Panthr75-ExtraSyringeCustomization-0.3.3

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

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
                }
            }
        }
    ]
}

Changelog

0.3.3

  • Fixed speed multipliers not resetting on level end.
  • Added "ClearWhenDown": bool field to DamageOverTime, RegenOverTime, and MovementMultiplier
    • Removes the effect when downed.
    • On by default.

0.3.2

  • Adjusted API for better GtfXP compatibility.

0.3.1

  • Fixed syringe buffs applying in sequence and applying all previous effects with each step
  • Fixed delay not being read in old format

0.3.0

  • Fixed speed modifying-syringes setting movement speed to 0 when playing without XP mod movement speed modifiers.

0.2.2

  • Added new file format
  • Fixed an incompatibility with GtfXP speed modifiers.

0.2.1

  • Update to newest bepinex version.
  • Fixed a bug where item count reduction didn't work.

0.2.0

  • Added support for syringes with multiple uses.

0.1.0

Initial release