USED MACHINERY AUCTION — 1.0
Author: mrEvgeniy

Install FS25_UsedMachineryAuction.zip in the FS25 mods folder and enable it in the savegame. Advanced Damage System (FS25_AdvancedDamageSystem) and its Vehicle Years dependency must be installed and enabled separately. Neither dependency is bundled here. Open the auction with Left Alt + U (rebindable).

FEEDBACK AUDIT

Paid inspections remain in My Auctions even when no bid was placed, and survive auction expiry and reload. Before purchase the condition panel displays only the purchased measurements; after purchase the historical purchase snapshot remains unchanged by later repairs. Inspection summaries use the native ADS aggregate. Frozen state now also preserves service counters and real operating hours independently from the displayed odometer. Legacy random appraisal indexes cannot report invented component failures. The removed repair-estimate page and its calculation/API requirement are gone.

NEW MARKET FEATURES

SELL EQUIPMENT
Navigation order: Lots, My Auctions, Sell equipment, Settings. Open Sell equipment and select a machine from the list. The page shows its shop image, operating hours, condition, paint and fill-unit contents. Click the large price field or Enter price, type the amount, then click Apply or press Enter. Esc cancels the edit. Zero and invalid amounts are rejected. Quick price buttons remain available. Seller commission and minimum net proceeds are shown below the field. Use the left/right duration arrows (5, 15, 30, 60, 180, 720 or 1440 game minutes); arrows stop at the range limits.
Stop and shut down the machine first. Filled and attached equipment can be listed. The selected machine automatically detaches from its parent and direct attached implements when the listing is created, using the game's networked detach operation. Only the selected original is sold; the other vehicles remain owned by the seller. Native non-detachable connections and connections to another farm are unavailable. Leased machines and machines undergoing service cannot be offered.
Existing fill-unit contents, including cargo and fuel, stay on the original. Unloading/refilling through the native fill-transfer API is blocked while listed or awaiting collection. No cargo is recreated, sold separately or paid out automatically; include its value in your minimum price. Physically loaded objects such as bales or pallets are separate game objects, not fill-unit contents.
The original vehicle stays parked and locked while listed or awaiting collection. The buyer receives that same vehicle, including its configuration, fractional operating hours, age and ADS components. No delivery fee is charged for player listings. The seller receives the winning price minus the configured commission. AI buyers may also bid; an AI purchase removes the original from the map. A listing can be withdrawn before the first bid. Expired unsold vehicles unlock without a seller charge.

AUTOMATIC BIDDING
Open Auto bid in the lot details (or Configure auto bid below). Click its separate maximum field and type the cap. Enter accepts the typed draft; Enable/Save limit opens the confirmation with fees. The draft does not change manual bids or activate bidding. Quick minus/plus buttons and Minimum are available. Esc cancels a current edit. Existing caps can be changed or disabled; previous winning bids remain binding.
The cap is the hammer price; commission and any delivery fee are extra. Caps reserve the available farm auction budget across lots. They do not prevent spending in other game systems. If funds become insufficient, automatic bidding pauses and shows a notification. Equal caps favor the earlier registered proxy. Caps stay private to the farm in multiplayer.

WATCHLIST AND SAVED SEARCHES
Temporarily removed from navigation and lot/filter actions. Notifications from old saved searches and watches are disabled. Previous data remains in the savegame for compatibility; automatic bidding remains available.

EQUIPMENT IMAGES AND MOD COMPATIBILITY
Mod-relative XML paths are resolved within the owning mod directory/namespace, including path separators and dot segments. Models are never matched by basename across mods. Custom category/namespace words no longer reject valid machinery as cargo; pallet forks and transport equipment remain eligible. An explicit model sale prohibition, leasing, ownership, use, service and connection restrictions remain enforced. Compatibility exceptions are logged once per distinct failure with [UMA] Sale, vehicle ID and XML path.
All three equipment pictures use explicit, centered aspect fitting in screen pixels, including the wide My Auctions frame. Layout/GUI scale no longer determines the source aspect ratio. The game's native UV coordinates preserve orientation. Numeric profile dimensions avoid the XML parsing warning. All shop icons use the standard square canvas; no prohibited Lua file reads are attempted. The repair-estimate page has been removed.
Owned mod machines are matched against complete canonical shop XML paths, with case and path-separator normalization. Machines without an ADS specialization or explicitly excluded by ADS may be sold using their actual ordinary damage/paint state. ADS reports are produced only where ADS is actually active; the original machine, its configuration and contents are still transferred. This fallback survives save/reload. Only equipment owned by the current farm is shown in the sale inventory. Leased, mission-provided and other farms' machines are excluded. Temporarily blocked owned equipment remains visible with its reason. Live combine/motorized-driveable specializations take priority over shop category labels. Automatic inventory tracing has been disabled after the reported missing CLAAS was confirmed to be leased.
Price decrement buttons use a plain ASCII minus and arrow buttons use < and >, so the game font can display them.

SAVEGAME AND MULTIPLAYER
Farm caps, listings and purchase reports are saved with the auction. Settings remain server-controlled. All players must use the same mod build and compatible dependencies. Version remains 1.0 as requested; replace the ZIP on every client and server when updating.

VALIDATION FOR THIS BUILD
Automated checks outside FS25 passed for Lua syntax, XML identifiers/callbacks, all five localization key sets and formatting, proxy budgets and equal caps, permissions, per-farm data isolation, save/load, seller/buyer settlement, no-sale and AI outcomes, original-vehicle identity, fractional hours, ADS-adapter state rollback, preserved service logs, retry without duplicate receipt, and refresh/input paths across all four tabs and five languages. Additional checks cover namespaced mod vehicles with and without active ADS, path normalization, save/reload, independent auto-bid entry/confirmation, font-safe signs and removed repair-estimate controls. Layout previews were checked from XML-derived widgets.
Additional isolated checks execute the supplied ADS source for the component solver, consumable initialization, dealer prices, inspection serialization and odometer API: six condition levels and all three inspection tiers match before and after transfer. Vehicle configuration, engine registration, network delivery and baseline log scaffolding are mocked.
These checks use a mocked game environment. They do not establish that the FS25 engine, actual ADS runtime, physics, GUI rendering or multiplayer transport have passed testing.

IN-GAME ACCEPTANCE CHECKS
1. Buy a generated powered machine after each inspection tier; compare the report, condition, paint and hours with ADS after collection.
2. List an owned configured powered vehicle with existing service history. Buy it from another farm after inspection; verify the same parked vehicle, configuration, hours, prior service entries and new inspection. Save/reload both during bidding and while awaiting collection.
3. Repeat with non-powered equipment; it should show overall condition and paint, without engine parts.
4. Exercise withdrawal, no bids and an AI purchase. Check funds and that no duplicate vehicle is created. Check that connected implements detach when listing, stay with the seller, and that fill-unit contents reach the buyer unchanged. Listed machines must reject use, attachment, unloading/refilling, repairs and a second sale.
5. Set competing automatic caps on two farms, including equal caps; reconnect a client and check cap privacy, reserved funds and final history. Test insufficient funds after unrelated shop spending.
6. Verify manual price entry, Apply/Enter/Esc, currency conversion, duration arrows, equipment images, game-time acceleration/pause, diagnostic modal screens and all five languages at the intended resolution. Check that watch/search navigation and alerts are absent.

FILTER PANEL
Opening filters hides both the lot detail content and its separate background, so it cannot cover category chips, limits or the Done button. Closing filters restores the detail background, including when no lot is selected.

Filters: select several categories and statuses with repeated clicks. Click an active option to remove it; All clears that group. Different groups combine. Price, condition, age and hours remain single limits. Done closes the panel and keeps selections; Reset clears filters.

Filter visual polish: aligned full-width rows, consistent option height, wider category/sort targets, subtle separators, no uneven card backgrounds. Multi-selection behavior unchanged. Geometry, mock GUI and regression checks passed; not tested in the FS25 engine.
