SlurryPipeSystem v1.0.1.6


SlurryPipeSystem v1.0.1.6
Release V1.0.1.6
Everything since V1.0.1.5. No config schema changes, savegames unaffected.
Added
Spreader HUD can follow the help menu (F1)
New per-player setting under the SPS HUD section: Hide with help menu (F1).
Yes: the SPS HUD (dribble bar cells, pressure, pump readout) hides together
with the help menu when F1 is pressed, and returns with it. No (default): it
stays on screen exactly as before. Saved per player, never synced.
Changeover-lever animation — <pump directionAnimation=”…”>
Tankers can now show their vacuum/pressure changeover lever moving. Name an
animation from the vehicle’s own <animations> on the pump element
(<pump pumpType=”vacuum” directionAnimation=”myLeverAnim”/>); time 0 = FILL
(vacuum), time 1 = DISCHARGE (pressure). SPS plays the swing on every
direction toggle, snaps the pose on spawn and savegame load, and stays in
sync in multiplayer and on dedicated servers with no extra setup — the
animation rides the same direction event every peer already receives.
Coupler animations from the vehicle’s own <animations> block
Couplings can now reference vanilla animations by name —
connectorAnimationName=”…” / valveAnimationName=”…” on
<pipeCoupling> — instead of re-authoring the parts in <couplerAnimations>.
Start = disconnected/closed, end = connected/open. Save/load pose restore and
multiplayer sync work exactly like the id-based system; a missing animation
name warns in the log. Vehicle couplings only.
Rear-valve animation — <spreaderValveAnimation name=”…”>
Spreader tankers can animate their rear valve with the SPS spreader valve:
name an animation from the vehicle’s own <animations>; it plays open/closed
with the valve toggle (time 0 = closed, 1 = open), starts closed, and syncs
in multiplayer including late joiners. Sounds in the animation ride along.
A movingTool axis driving the same animation may stay in the XML for
players without SPS — SPS disarms it automatically at registration (logged),
so one XML serves both audiences. Same for the directionAnimation lever,
and for a <foldable> setup driving an SPS-owned animation: the fold key
then refuses with a clear warning instead of desyncing the lever.
Manual / hydraulic changeover as a store option
An outside direction control can declare store-configuration indices
(cabDirectionConfigIndex / cabDirectionConfigType) for which the
direction control moves into the cab — a tanker sold with a manual
changeover keeps the walk-up control, while the hydraulic-changeover
variant of the same tanker is switched from the seat (hydraulics
connected required). PTO at the node is unaffected.
Blockage clearing is now a proper job
The blockageAnimation no longer fires when a blockage happens — it now
belongs to the clearing: hold the clear key and the mechanism opens
(animation forward), the clearing time runs, and it closes back up
(animation reverse) before the blockage clears. Releasing early aborts and
winds it back. Without an authored animation, clearing is the plain timed
hold as before. Clearing now requires the pump off and the spreader valve
closed on every tanker type (vacuum tankers must also be vented), and other
players see the whole attempt in multiplayer.
Quieter, clearer logs
One line per vehicle names its nodeTree and how many nodes linked; a declared
but unloadable nodeTree, an unresolved blockage section band, and a missing
animation name each warn explicitly; the crust-vegetation load chatter moved
behind a debug channel. Silent failures keep getting louder, healthy loads
keep getting quieter.
Fixed
Coupler “connect” option lost when visuals are added under the mount node
The connect-detection arc group was found strictly as the mount node’s FIRST
child. A modder who nested coupler animation visuals (clamps, handles) under
the mount node before the arc group lost the connect option entirely — the
coupler still laid pipe, but walking a laid pipe’s end onto it offered
nothing. The arc group is now found by name (any direct child ending in
Arcs), with the old first-child rule as fallback, so child order no longer
matters. The coupler node structure is now documented in the tanker guide.
Open spreader valve: the pump only builds against slurry
With the rear spreader valve open, vacuum can no longer be built at all (the
valve must be closed to fill — no pumping-in while spreading), and pressure
builds only while slurry is aboard. An empty tank with the valve open builds
nothing and any stored charge vents at the fast rate.
New: the spread follows the gauge — spread rate and the size of the
discharge effect now scale continuously with stored pressure: no charge =
a slow gravity dribble with a small stream, half a charge = a visibly weaker
spread, full charge = the full-rate, full-size spread. Watch the stream fade
as the stored pressure tapers with the PTO off.
Working-speed cap released when the tank is empty
An open spreader valve kept the implement’s working-speed cap (and thickness
speed scaling) even with an empty tank — driving home empty at field speed.
The cap now releases as soon as there is nothing left to spread.
Blockage-risk HUD honours per-vehicle tuning
The risk row used the global crust thresholds, so a machine tuned to resist
blockages (e.g. a wide-bore splash plate with outletCrustMinRaw 0.85) showed
HIGH while its actual risk was near zero. Risk is now computed from the same
per-vehicle thresholds the blockage roll uses.
Store pipe effects during gravity / head-driven emptying
A placeable store’s own pipe effect only played while the connected tanker’s
pump was running with pressure built. A tanker emptying into the store by
gravity or head equalisation — pump off, level still falling — moved slurry
with no visible stream at the store inlet. The effect is now driven by the
same flow resolver that moves the liquid, matching the 1.0.1.4 fix the
tanker-arm effect got.
SPS nodes on a vehicle’s 2nd, 3rd, … component were invisible
Every vehicle-side node lookup searched only rootNode — which in FS25 is
component 1 and nothing else; the other components are its siblings, not
its children. Any SPS node authored on a later component (a coupler on the
sprung tank body so it rides the suspension, a fill arm on a rear frame) was
silently never found: nodeTree containers failed to link, and mountNodeName
lookups came up empty. Placeables never had this problem — their resolver
always searched every component; the vehicle side now does the same.
Affects the nodeTree container linker, all mountNodeName/surfaceRef/sound
node resolution, the whitespace-tolerant retries, the live-arm relink, and the
sprayer-side equivalents.
Both authoring styles remain fully supported, alone or mixed: SPS nodes
authored directly in your vehicle’s i3d (on any component — put them on the
component that physically carries them), and/or injected from a separate
<nodeTree> i3d shipped next to your vehicle. Nothing was removed; the log
now prints one line per vehicle naming the nodeTree and how many nodes it
linked, so you can see which path ran.
Release V1.0.1.5
Everything since V1.0.1.4. A small follow-up release: custom vehicle types that
descend from none of the vanilla tanker families now work, and the tanker /
fert-sprayer override families are kept cleanly apart. No config schema changes,
savegames unaffected.
Added
Custom vehicle types — the safety net
V1.0.1.4 taught SPS to walk a type’s parent chain, covering modder types derived
from the vanilla tanker or sprayer families. This release covers everything
else: a vehicle whose type descends from none of them (e.g. a modder’s own
parent=”sprayer” or parent=”tractor” type, as in the LSFM Universal Tank
Pack) but that registers through an embedded <slurryPipeSystem> block now
receives the tanker behaviour per-vehicle at registration. The declaration
in the vehicle’s own XML is the authority — the type family is just the fast
path. A log line names the type when this kicks in:
[SPS] custom vehicle type ‘…’ is not in the tanker type family — N tanker override(s) applied per-vehicle at registration.
Fert/herb sprayers cannot be affected: only a pure slurry registration triggers
it, dual-registered sprayer/slurry machines keep their exact previous
behaviour, and blockage-only spreader implements (dribble bars) stay driven by
their tanker as before.
Fixed
Tanker / sprayer override families kept apart
With 1.0.1.4’s parent-chain walking, the vanilla tanker types (which themselves
descend from the sprayer types) also collected the fert-sprayer override set a
second time on top of the tanker set. Harmless in play (the functions
self-guard), but the two families are now resolved exclusively — a type is
covered as a tanker or as a sprayer, never both.




