Custom Effects
A modder's tool: adds a new library of custom SideLoader effects for XML mods.
About this mod Author’s original text
Overview
A standalone SideLoader library for mod authors. It adds SL_UseSkill, SL_LearnSkillHidden, SL_Banish, SL_PlayVFXOnWeapon, SL_PlayVFXOnChar, SL_PlayVFXPulsed, SL_PlayTimedSound and SL_ReliableVisuals you can use from XML.
SL_UseSkill
Makes a character cast a skill they already know.
0
OwnerSync
None
8100102
Owner
3
| Field | Meaning |
|---|---|
| SkillID | Item ID of the skill. The target must already know it |
| Target | Owner (the caster) or AffectedCharacter |
| MaxWait | Seconds to wait for the character to be free before giving up |
It goes through Item.TryQuickSlotUse() — the same path as pressing a quickslot key — so the game
handles requirements, cooldown, costs, animation and networking.
SL_LearnSkillHidden
Teaches a skill permanently without it appearing in the skill menu. For skills your mod triggers
itself rather than ones the player casts.
0
OwnerSync
None
-88002
The skill is genuinely learned, castable and networked — it simply never shows in the menu.
It survives saves and reloads.
Why you need this.
SL_UseSkill cannot cast a skill the character has not learned — Item.TryQuickSlotUse refuses one
outright. Without a way to teach invisibly, a mod that fires its own skill must either put it in the
player's menu or not work at all.
The learning is vanilla's TryUnlockSkill. Only the display lists are patched; the authoritative
knowledge is left alone. So the skill is genuinely learned, castable and networked — it simply is not
listed, and skill-limit mods, which count those same display lists, do not see it.
Nothing is persisted: the display lists are rebuilt from scratch every session, which is why
uninstalling this library just makes the skill visible again rather than corrupting a save.
SL_Banish
Sends a character beyond the veil (inert, untouchable, untargetable and unseen) for a duration, then
returns it exactly as it was.
0
MasterSync
None
10
Use MasterSync on enemies. Ends early if the character dies, restoring it as a lootable corpse.
A banished character is silent, and cannot start an attack while it is away. An attack it had already
begun is not cancelled — it is held exactly as it was and resolves normally when the banish ends.
Damage already under way still lands: DoTs applied before the banish keep ticking, and
a banished creature can die from them. What it cannot take is a fresh hit — its hitboxes are gone.
Loading a save mid-banish releases the creature immediately rather than starting the duration over,
and in co-op a client that joins while a banish is running follows the host's rather than running a
clock of its own.
Why you need this.
Vanilla has no equivalent. SL_Stun is cancelled by almost any state change, and SL_Petrify
makes the target count as dead and revivable. Neither gives you a timed removal from the fight
that returns the character untouched.
There are no toggles: Duration is the only field.
SL_PlayVFXOnWeapon
SL_PlayVFX, but able to land on weapons the vanilla hook silently refuses.
0
OwnerSync
None
VFXRunicBlade
false
This
false
true
Keep
| Field | Meaning |
|---|---|
| VFXPrefab | Same list as SL_PlayVFX |
| AllowSkinnedMesh | Let the emitters find a SkinnedMeshRenderer. Default true |
| Slot | Keep (the prefab's own value), MainHand or OffHand |
Everything else behaves exactly as SL_PlayVFX.
Why you need this.
A weapon VFX like VFXRunicBlade has no position of its own. Its particle systems each carry a
VFXParticlesOnWeapon, which does not follow the hand — it takes the weapon's mesh and makes it the
particle emission shape.
Two things make it give up, and both are silent. When it gives up, the particle system keeps
whatever shape the prefab was authored with and the effect still plays — just in the wrong place
and the wrong form, with nothing logged. That fallback looks exactly like a positioning bug, which
it is not: no Position, Rotation, ParentMode or Delay can affect it, because position was
never the mechanism.
This ef
Install & use Install: BepInEx plugin
- The archive from playbuff is the mod itself — usually a BepInEx plugin (a .dll or a plugin folder once unzipped).
- Recommended: use a community mod manager (such as r2modman) — pick this game, import the mod, and the manager sets up BepInEx and its dependencies for you.
- Manual route: install the BepInEx loader in the game folder, then drop the unzipped .dll or plugin folder into BepInEx/plugins/.
- Launch the game — the BepInEx console logs every plugin it loads; seeing this mod in the log means it is installed.
Mods with listed dependencies need those installed too, or they will not load. Options are usually changed in-game or in the plugin's config file.
Install these first, or the mod will not work: