PerfectOils

版本 v1.3.7·更新於 2026-08-29

Selectively removes configurable negative effects from SULFUR weapon oils while preserving positive effects and marking removed tooltip lines.

模組介紹 作者原文

Perfect Oils 1.3.6

A BepInEx 5 mod for SULFUR that selectively removes undesirable weapon-oil traits while preserving positive effects and the original localized descriptions.

Removed traits

Every supported trait has its own config switch.

The default profile only removes effects that have relatively little impact on weapon balance:

  • Disable Aiming
  • Extra Ammo Consume Chance
  • Decrease Accuracy When Moving
  • Decrease Move Speed
  • Decrease Jump Power
  • Decrease Loot Chance Multiplier
  • Disable Money Drops
  • Disable Organ Drops

The following stronger stat-changing removals are available but default to disabled:

  • More Bullet Drop
  • More Drag
  • Negative Bullet Speed
  • Negative Damage
  • Negative Bullet Size
  • Negative RPM
  • Negative Max Durability
  • More Recoil
  • More Spread
  • Slower Reload
  • Faster Durability Loss
  • Self Damage
  • Reduced Projectile Force
  • Extra Oil Durability Cost

The signed-value rules only suppress modifiers in the harmful direction:

  • ProjectileTimeScale 0: more recoil;
  • Spread > 0: wider spread cone;
  • ReloadSpeed 0: faster per-shot durability loss;
  • EnchantmentSelfDamage > 0: damages the wielder on fire;
  • ProjectileForce < 0: weaker launch velocity.

Positive bullet-speed, damage, bullet-size, RPM, max-durability, and projectile-force modifiers, along with recoil-reducing, accuracy-improving, faster-reload, and durability-saving modifiers, remain active.

More Bullet Drop also suppresses its same-oil reduced-speed or increased-mass companion modifiers. Because reduced projectile speed belongs to both categories, it is removed when either RemoveMoreBulletDrop or RemoveNegativeBulletSpeed is enabled.

Tooltip behavior

The game still shows the original oil effects. Lines for traits currently disabled by Perfect Oils are wrapped in TextMeshPro's strikethrough tag.

This works for:

  • hovering an oil item;
  • hovering an oil listed on an enchanted weapon;
  • randomly selected oil enchantments.

The tooltip and runtime suppression use the same trait classifier and the same config values, so their states remain consistent.

Implementation

Perfect Oils keeps EnchantmentDefinition.modifiersApplied intact. At database load it indexes exact modifier signatures by:

  • enchantment source ID;
  • ItemAttributes value;
  • StatModType;
  • modifier value;
  • classified negative-trait flags.

A targeted prefix on ItemStats.AddModifier(ItemAttributes, StatModifier) ignores only a matching oil modifier whose corresponding config option is enabled. No weapon, loot, movement, aiming, projectile, or damage consumer is replaced.

The index contains every known negative signature regardless of the current settings, so config changes do not require rebuilding the asset database.

Oil stat modifiers are baked into each item's ItemStats when the oil is applied or the save is loaded, so a changed setting cannot retroactively alter an already-oiled weapon by itself. To make settings take effect live, changing any trait toggle (or the master Enabled switch) re-applies oil modifiers to the player's currently loaded items - equipped items, the backpack, the paperdoll, and any opened stash - by removing and re-adding each enchantment's modifiers so they pass through the suppression prefix again under the new config. Items in a stash that has never been opened this session are rebuilt the next time a setting changes while that stash is loaded. Tooltip changes are evaluated whenever the tooltip is rebuilt. The durability-cost setting updates the shared oil definitions immediately.

Requirements

  • SULFUR
  • BepInExPack 5.4.2305

Build

  • Copy LocalPaths.props.example to LocalPaths.props.
  • Set SulfurManagedDir and BepInExCoreDir.
  • Build PerfectOils.csproj in Release mode.
  • Copy PerfectOils.dll to BepInEx/plugins/PerfectOils.

No game DLLs, Unity assemblies, or BepInEx binaries are included in this source package.

Config

Generated at:

BepInEx/config/com.ryuka.sulfur.perfectoils.cfg

General

  • Enabled = true
  • RemoveExtraDurabilityC

安裝與使用 安裝:按包內說明操作

  1. 解壓本站下載的壓縮包,先讀包內的 readme / 說明檔案。
  2. 多數模組依賴遊戲的模組載入器:常見做法是用社群模組管理器(如 r2modman)選中本遊戲安裝,由管理器自動處理載入器與依賴。
  3. 手動安裝時,把模組檔案放進遊戲目錄下對應的 Mod / plugins 資料夾。
  4. 啟動遊戲確認載入成功;帶「前置依賴」的模組需要把依賴一併安裝。

不同模組的安裝位置差異較大,包內說明是最可靠的依據。

前置依賴

下面這些內容需要先安裝,否則該模組不會生效:

BepInEx-BepInExPack

檔案與校驗

檔案名稱
PerfectOils-1.3.7.zip
檔案大小
113.2 KiB