DIESEL GEL SYSTEM v2.0.0.10

INSTALL
Copy FS25_DieselGelSystem.zip into your FarmingSimulator2025/mods folder.

BEHAVIOR
- Only vehicles with a DIESEL consumer fill unit are affected.
- Actual engine torque begins dropping around 16 F (-8.9 C).
- Diesel gelling begins at 10 F (-12.2 C) and accelerates in deeper cold.
- Physical engine torque progressively falls to a minimum of 40%.
- The HUD displays only the block temperature.
- At 16 F or colder, a one-time warning recommends parking the vehicle somewhere warm.
- Once enough gel has accumulated, a manual start attempt cranks briefly, stops, and reports that the fuel is gelled.
- A running, warm engine thaws the fuel system.
- Temperatures above 10 F stop new gelling and gradually thaw existing gel.
- Shelter detected through the native indoor mask slowly lowers gel by 3% per game hour.
- A full anti-gel treatment adds another 12% thaw per game hour and becomes less effective as it is diluted.
- Gel level is saved per vehicle and synchronized from the server.
- Right Shift+A purchases a $25 anti-gel treatment. Refueling dilutes it.
- Gel power loss rebuilds the cached motor physics for real torque reduction.
- The block-temperature readout is positioned above the circular minimap.

TESTING
With the developer console enabled, enter a diesel vehicle and use:
  gsDieselGelSet 50
to test power reduction, or:
  gsDieselGelSet 90
to test the manual and automatic engine-start block. Use gsDieselGelSet 0 to
clear it. Ambient temperature comes from the active weather system. Enter a
diesel vehicle to see the status line when gel level exceeds 5%.

Watch log.txt for lines beginning with [DieselGelSystem].

PORTABLE DIESEL HEATER (new)
- Buy "Portable Diesel Heater" from the shop under Misc.
- 40 L diesel tank, burns 2.5 L per game hour while running.
- Walk up to it and press the activate key to start or stop it.
- Thaws gel on any diesel vehicle within 12 m: full strength inside 4 m,
  falling off linearly to zero at 12 m.
- At full strength it removes 45% gel per game hour, which beats gel
  formation at every temperature the system models.
- Pick it up by hand and set it down wherever you want it.
- Runs dry and shuts itself off. State is saved and synced in multiplayer.
- It cannot be picked up while lit. Switch it off first; the walk-up prompt
  reads "Stop diesel heater" while it is running.
- Tuning lives in vehicles/dieselHeater.xml under <dieselHeater>.

HAND PICKUP
Three conditions must all hold or the pickup prompt will not appear:
  1. <supportsPickUp>true</supportsPickUp> in the base block (set).
  2. The i3d component has a DYNAMIC rigid body.
  3. Total mass is at or under the game's hand-carry limit.
Giants strips that mass constant from the published source, so the 30 kg in
dieselHeater.xml is a conservative guess rather than a verified number. If the
prompt never shows, halve the mass and retest before suspecting anything else.
The fill unit is set to updateMass="false" so fuel level never changes pickup
eligibility.

SHOP COLOUR
The heater has no texture. Its colour is picked in the shop from eight options
defined under <baseColorConfigurations> in vehicles/dieselHeater.xml.

This works by setShaderParameter(node, "colorScale", r, g, b) against the
material whose i3d slot name is "heaterBody_mat". Both of these must hold in
the i3d or the picker shows up and does nothing:
  1. the material slot name is exactly heaterBody_mat
  2. the material uses $data/shaders/vehicleShader.xml, which is the shader
     that exposes colorScale. Assign it in GIANTS Editor; a Blender Principled
     BSDF does not have that parameter.
To add or change colours, edit the <baseColorConfiguration> entries. Values are
linear RGB, 0-1, space separated.

HEATER MODEL
vehicles/dieselHeater.xml expects dieselHeater.i3d beside it. Optional nodes
(heatNode, flameNode, activateNode) all fall back to the root node, so any
model with a dynamic rigid body will work to start. fillTrigger is different:
it must be a shape with the trigger flag, not an empty, which is why the
fillTriggerVehicle line stays commented out until the model has one.
