ExtraSyringeCustomization
Allows for Rundown Developers to add new syringes. Should now support syringes with multiple uses.
By Panthr75
| Last updated | 3 months ago | 
| Total downloads | 11909 | 
| Total rating | 0 | 
| Categories | Rundown Mods | 
| Dependency string | Panthr75-ExtraSyringeCustomization-0.3.7 | 
| Dependants | 13 other packages depend on this package | 
This mod requires the following mods to function
BepInEx-BepInExPack_GTFO
BepInEx pack for GTFO. Preconfigured and includes Unity Base DLLs.
Preferred version: 3.2.1Dinorush-MovementSpeedAPI
API for plugin developers to modify movement speed.
Preferred version: 1.1.0README
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.7
- Applied syringes are now consumed if the user dies before finishing the animation, preventing duplication
 
0.3.6
- Re-compile for MovementSpeedAPI version
 
0.3.5
- Update to use MovementSpeedAPI
 
0.3.4
- Update plugin libraries to lift core libs requirement
 
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