Saru-SwiftPickupMagnetFix icon

SwiftPickupMagnetFix

Stops SwiftPickup's magnet from dragging items you cannot carry. Checks free slots, partial stacks and carry weight.

By Saru
Last updated 2 weeks ago
Total downloads 99
Total rating 0 
Categories Mods Tweaks
Dependency string Saru-SwiftPickupMagnetFix-2.0.0
Dependants 0 other packages depend on this package

This mod requires the following mods to function

denikson-BepInExPack_Valheim-5.4.2350 icon
denikson-BepInExPack_Valheim

BepInEx pack for Valheim. Preconfigured with the correct entry point for mods and preferred defaults for the community.

Preferred version: 5.4.2350
SoulEmper0r-SwiftPickup-1.3.3 icon
SoulEmper0r-SwiftPickup

Optimized auto-pickup for Valheim: smooth per-frame magnet, ground drops merged into stacks, loot multiplier on pickup - zero lag.

Preferred version: 1.3.3

README

SwiftPickup Magnet Fix

SwiftPickup aimante les objets au sol sans jamais vérifier qu'ils peuvent entrer dans l'inventaire. Quand celui-ci est plein, les objets sont tirés vers le joueur, le ramassage échoue, puis ils sont réinjectés au scan suivant — ils finissent par suivre le joueur en permanence.

Ce plugin retire de la liste magnet tout objet que l'inventaire ne peut pas accepter. Il ne touche ni au ramassage, ni au merge des drops, ni au multiplicateur de loot.

Détail du test

Un objet est écarté si l'une des deux conditions échoue :

  • Inventory.CanAddItem(item) — cases libres ou pile partielle compatible
  • GetTotalWeight() + item.GetWeight() <= Player.GetMaxCarryWeight() — surcharge

Les deux comptent. CanAddItem ignore le poids, et c'est la surcharge qui bloque l'autopickup vanilla, d'où le second test.

Conséquence des piles partielles : avec zéro case libre mais une pile de bois à 30/50, le bois reste aimanté. C'est voulu — l'objet rentre réellement.

Fonctionnement

Prefix Harmony sur SwiftPickup.SwiftPickupPlugin.MoveMagnets, appelée à chaque frame depuis le postfix de Player.Update. La liste statique MagnetItems est purgée avant tout déplacement. HandleScan réinjecte les objets au scan suivant (0,15 s par défaut), le prefix les retire à nouveau avant la frame suivante : déplacement net nul.

Les internes de SwiftPickup sont résolus par reflection. Si une mise à jour renomme MoveMagnets ou MagnetItems, le plugin logge un avertissement et ne patche rien plutôt que de casser le jeu.

Configuration

BepInEx/config/saru.swiftpickup.tweaks.cfg

Clé Défaut Effet
Enabled true Active le filtrage de la liste magnet
Compilation
dotnet build -c Release -p:Deploy=true

Les chemins ValheimDir et BepInExDir sont définis dans le .csproj et peuvent être surchargés en ligne de commande. Cibler net472 demande soit le package NuGet Microsoft.NETFramework.ReferenceAssemblies, soit le .NET Framework 4.7.2 Developer Pack.

Testé avec SwiftPickup 1.3.3 et BepInEx 5.