An open API service indexing awesome lists of open source software.

https://github.com/ubermorgott/shareship

Windrose mod: let any player open any ship's management UI (cargo hold, upgrades, slots). Tiny 2.5KB IoStore LogicMod, no UE4SS, AC-compatible.
https://github.com/ubermorgott/shareship

Last synced: 20 days ago
JSON representation

Windrose mod: let any player open any ship's management UI (cargo hold, upgrades, slots). Tiny 2.5KB IoStore LogicMod, no UE4SS, AC-compatible.

Awesome Lists containing this project

README

          

# ShareShip — Open Any Ship's Management UI for Any Player

**Download on Nexus Mods:** https://www.nexusmods.com/windrose/mods/147

In vanilla Windrose only the owner (or active helmsman) of a ship can press **Q** on the wheel to open the ship's management UI. ShareShip removes that single gate — any player who can reach the helm can now manage any ship's cargo hold, slot upgrades, and configuration. Owner-based systems outside the management UI (respawn, permanent customization, insurance, naming) are untouched; this mod only changes who can open the screen.

## Features

- Non-owner **Q** prompt shows on any ship's helm.
- Opens the full management UI: cargo hold, upgrades, slots, and other owner-only views.
- **Server-authoritative** — the dedicated server's copy is what matters. Clients who also install the pak additionally see the Q prompt render locally on non-owned ships.
- **No Lua, no UE4SS, no runtime injection.** ShareShip is a pure cooked-asset override, so it coexists with Windrose's anti-cheat (which does not scan cooked pak contents).
- Tiny. Total install size is **~3.4 KB** (three files: `.pak` + `.ucas` + `.utoc`).

## Install

**Requirements**
- Windrose (Steam AppID `3041230`) on a build using the R5 codename (Unreal Engine 5.6.1).

**Steps**
1. Download `ShareShip.zip` from the latest [Release](../../releases).
2. Extract it. You will get three files: `ShareShip_P.pak`, `ShareShip_P.ucas`, and `ShareShip_P.utoc`.
3. Place **all three files** at:
```
\R5\Content\Paks\~mods\ShareShip\
```
Create the `~mods` and `ShareShip` subfolders if they don't exist.

> **Upgrading from v1.2.0?** Add back the `.ucas` and `.utoc` files — all three are required.
4. For multiplayer, the **dedicated server** must also have the mod. If you run the server from Steam, the path is:
```
\R5\Content\Paks\~mods\ShareShip\
```
5. Start the game / server. The log file `R5\Saved\Logs\R5.log` should report the mount:
```
LogPakFile: Mounting pak file ... ShareShip_P.pak
```

**Uninstall.** Delete the `ShareShip/` folder. The mod adds no persistent state and no save-schema changes, so removal is safe at any time.

## How it works (brief)

ShareShip ships two cooked-asset overrides inside an IoStore triple (`.pak` + `.ucas` + `.utoc`):

1. **`DA_InteractionOption_ShipManagement`** — the patched `.uasset` differs from the retail file by **seven bytes** across the `FObjectImport` table, `FObjectExport` table, and preload dependencies. All six references to `R5Requirement_CanOpenShipManagement` (the owner check) are redirected to `R5IsTargetAliveRequirement`, which is already imported by the same DataAsset and returns true for any live ship. This complete redirect satisfies the `AsyncLoading2` validation (`TemplateObject->IsA(LoadClass)`) introduced in the 2026-04-30 engine update. The interaction's other gating requirements (boarding state, target-alive, common-composition) are kept intact, so the only behavioural change is that the owner check is bypassed.
2. **`DA_InteractionTarget_ShipSteeringWheel`** (new in v1.1) — a 4-byte edit to the helm target's `.uexp` sets the third `FPackageIndex` entry in the helm's `Options` TArray to null. That entry used to reference `DA_InteractionOption_ShipDockManagement`, the dock-specific Management option. With it nulled, the engine's UI skips the empty slot and the helm only ever advertises two options (Steering on E, Management on Q) instead of three. This removes the v1.0 duplicate-Q-prompt regression that appeared when a ship was docked.

The repo at [`uberMorgott/Windrose-Modding-Toolkit`](https://github.com/uberMorgott/Windrose-Modding-Toolkit) contains the full reverse-engineering notes, SDK-dump workflow, and the Go-based `.uasset` / `.uexp` patch utilities used to produce this override.

## Compatibility

- **Engine:** UE 5.6.1.
- **Game:** Windrose builds using the R5 codename. If your Windrose install has `R5\Content\Paks\`, you're on a compatible build.
- **Known conflicts:** none. Any other mod that overrides the exact same DataAsset (`DA_InteractionOption_ShipManagement`) will fight with this one — load order (alphabetical inside `~mods`) decides the winner.
- **Save-safe.** No replicated properties added, no schema change, no sidecar files.

### Reports of conflicts — investigated and cleared

After v1.1 a few users reported missing quest/discovery journal, fast-travel freezes on dedicated, or BackPacks10x being shadowed and pointed at ShareShip. Investigation cleared the mod:

- ShareShip patches exactly two ship-related DataAssets in `/Interaction/`. No path overlap with BackPacks10x (`/ItemsLogic/Backpack/`) or ShipInventory10x (`/Plugins/R5BusinessRules/`).
- A Ghidra decompile of the Windrose shipping binary shows the engine's pak / IoStore loader (`FPakPlatformFile::Mount`, `FFilePackageStoreBackend::Mount`, `FPakFile::Initialize`) is byte-for-byte identical to stock UE 5.6 — the container cannot affect what other paks load.
- The same symptoms are independently reported on mods 31, 99, and 107 by users who never installed ShareShip. Real culprits identified: Vortex Mod Manager, a broken third-party packer batch that corrupted BackPacks10x / ShipInventory10x around 21–23 April 2026, and a separate "No Fog of War" pak.

Full evidence with direct comment citations is in the [sticky comment on Nexus](https://www.nexusmods.com/windrose/mods/147?tab=posts#comment-168798341).

## Cosmetic note

- When docked, the Q prompt label reverts to "Ship Management" instead of "Ship Management (docked)". Cosmetic only — the management UI itself is identical in both variants (same cargo hold, slot upgrades, etc.). No functional feature is lost.

## Build from source

See [`build/README.md`](build/README.md) for prerequisites, extraction of the retail `.uasset`, the 7-byte redirect patch, and repacking the IoStore triple with `retoc`.

## License

[GPL-3.0](LICENSE).

## Credits

- **Morgott** ([github.com/uberMorgott](https://github.com/uberMorgott)) — reverse engineering, patch tooling, build.
- **WindrosePlus** authors ([HumanGenome](https://github.com/HumanGenome) et al.) — prior-art Lua patterns and the initial R5 class map that seeded the research.