ExtraSyringeCustomization
Allows for Rundown Developers to add new syringes. Should now support syringes with multiple uses.
By Panthr75
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
BepInEx pack for GTFO. Preconfigured and includes Unity Base DLLs.
Preferred version: 3.2.1README
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