You are viewing a potentially older version of this package. View all versions.
PXC-ShipLootPlus-1.0.9 icon

ShipLootPlus

Rewrite of the OG ShipLoot and enhanced with more customization

Date uploaded 8 months ago
Version 1.0.9
Download link PXC-ShipLootPlus-1.0.9.zip
Downloads 40948
Dependency string PXC-ShipLootPlus-1.0.9

This mod requires the following mods to function

BepInEx-BepInExPack-5.4.2100 icon
BepInEx-BepInExPack

BepInEx pack for Mono Unity games. Preconfigured and ready to use.

Preferred version: 5.4.2100
AinaVT-LethalConfig-1.4.0 icon
AinaVT-LethalConfig

Provides an in-game config menu for players to edit their configs, and an API for other mods to use and customize their entries.

Preferred version: 1.4.0

README

ShipLoot Plus (+)

Rewrite and enhancement to the original ShipLoot with a ton customization.

This started as a fork but I ended up rewriting 99% of it to allow for more dynamic customization.

IMPORTANT: With v1.0.1 there has been some changes which will reset any custom line formats and colors. You do not need to regenerate your configs and these settings will still be in your config file, its just that the line names and categories have changed (though now you would have extra data in the files). Please review the Change Log for more information on what has changed as you may want to have new customizations anyway.

Key Features

This mod adds three customizable HUD elements which allow you to display many different data points. This is expanded from the original ShipLoot which only showed the value of scrap in the ship.

  • Show more game information easily
  • Highly customizable
    • Font and Display Layout
    • Colors (including Rich Text support)
    • Information format
  • Conditional display
    • Default (on scan only)
    • Always Shown
    • Allow it to be shown when outside the ship and/or inside the dungeon

This is what the HUD looks like with its default data points.

NOTE: You can see what the different parts mean in the breakdown below

Feature Breakdown

DataPoint patterns and information

Below are the full list of what I call "DataPoints", essentially these DataPoints are basically replaced in the format string with the corresponding information from the game

  %ShipLootValue%      = Value of all scrap on the ship
  %MoonLootValue%      = Value of all scrap on the moon (excluding the ship)
  %AllLootValue%       = Value of all scrap (ship and moon)
  %ShipLootCount%      = Count of scrap items in the ship (excluding the moon)
  %MoonLootCount%      = Count of scrap items on the moon (excluding the ship)
  %AllLootCount%       = Count of scrap items (ship and moon)
  %FulfilledValue%     = Value of turned in scrap for quota
  %QuotaValue%         = Value of current quota
  %CompanyRate%        = Current company buy rate
  %ExpectedProfit%     = Expected profit from scap on ship at current company buy rate
  %Deadline%           = Days until quota is due
  %DayNumber%          = Integer of days in the ship/save (E.g. 1, 3 ,10)
  %DayNumberHuman%     = Human friendly days in the ship/save (E.g. 1st, 3rd, 10th)
  %Weather%            = Current moons weather full name
  %MoonLongName%       = Current moons full name

Example Breakdown

Default Lines:

Ship: $%ShipLootValue%(%ShipLootCount%) / $%MoonLootValue%(%MoonLootCount%) <i>[%MoonName%:%Weather%]</i>
Quota: $%FulfilledValue% / $%QuotaValue% - Profit: $%ExpectedProfit%(%CompanyRate%%)
Deadline: %Deadline% - %DayNumberHuman% day

Translated Lines:

Ship: $209(2) / $0(0) [Offense:Clear]
Quota: $0 / $229 - Profit: $63(30%)
Deadline: 3 - 5th day

DataPoint Shortening

Each data point can be shortened so that it shows a truncated version of the data. All you have to do is add a ':' and a number and it will truncate that value to the number provided

  • %MoonName:3% becomes Off
  • %MoonName:5% becomes Offen

Rich Text Support

You can introduce further customizations inline with your formats.

Here are some resources to understand Rich Text and what tags are available (not every tag will work as the font that the game uses lacks some support)

Inline Rich Text formatting will override the text color for the specific word or DataPoint in the line, they are applied after the text line color configuration.

Specific DataPoint settings

Some data points have specific settings tied to them

Deadline

Customizing how the %Deadline% data point is displayed

Zero Replacement

By default when the deadline reaches zero, it is replaced with "NOW!", this can be disabled or the word can be changed in the config

Color Coding

You can enable/disable color coding directly for this data point in the config, it is disabled by default.

The color is set using the following thresholds:

  • 2+ Days left
  • 1 Day left
  • 0 Days left

Each color can be customized in the config

Configuration

  [DataPoint: Deadline]

  ## Enables color for the deadline number
  # Setting type: Boolean
  # Default value: false
  Use Colors = false

  ## Replace the number 0 with the custom text below, otherwise leave it as a number
  # Setting type: Boolean
  # Default value: true
  Replace Zero = true

  ## Text to replace the number Zero if 'Replace Zero' is enabled
  # Setting type: String
  # Default value: <b>NOW!</b>
  Zero Replacement = <b>NOW!</b>

  ## Color for when the deadline has two or more days remaining
  # Setting type: String
  # Default value: 00FF00
  Color: 2+ days = 00FF00

  ## Color for when the deadline has one day remaining
  # Setting type: String
  # Default value: FFA500
  Color: 1 day = FFA500

  ## Color for when the deadline is due
  # Setting type: String
  # Default value: FF0000
  Color: Zero days = FF0000

Weather

Customizing how the %Weather% data point is displayed

None/Clear Weather Text

By default when there is no weather, instead of showing "None" its changed to "Clear". This can be changed in the config or set to nothing/blank to show "None"

Color Coding

You can enable/disable color coding directly for this data point in the config, it is disabled by default.

It will change the color of the weather based on what weather it is, the colors can be customized in the config

NOTE: The "Hell" weather type is added by the HellWeather mod

Configuration

  [DataPoint: Weather]

  ## Text to use instead of 'None' for when the weather is clear (set to blank if you want it to show None)
  # Setting type: String
  # Default value: Clear
  Clear Weather Text = Clear

  ## Enables color for each weather type
  # Setting type: Boolean
  # Default value: false
  Use Colors = false

  ## Color for Clear/None weather
  # Setting type: String
  # Default value: 69FF6B
  Color: Clear/None = 69FF6B

  ## Color for DustClouds weather
  # Setting type: String
  # Default value: B56C4C
  Color: DustClouds = B56C4C

  ## Color for Rainy weather
  # Setting type: String
  # Default value: FFFF00
  Color: Rainy = FFFF00

  ## Color for Stormy weather
  # Setting type: String
  # Default value: FF7700
  Color: Stormy = FF7700

  ## Color for Foggy weather
  # Setting type: String
  # Default value: 666666
  Color: Foggy = 666666

  ## Color for Flooded weather
  # Setting type: String
  # Default value: FF0000
  Color: Flooded = FF0000

  ## Color for Eclipsed weather
  # Setting type: String
  # Default value: BA0B0B
  Color: Eclipsed = BA0B0B

  ## Color for Hell weather (from the mod 'HellWeather')
  # Setting type: String
  # Default value: AA0000
  Color: Hell = AA0000

MoonName

You can customize some of the ways the moon name is displayed

Show the full moon name

By default the leading numbers are removed from the moon name 21 Offense becomes Offense, you can disable this to show the full moon name in the config

Replace Company Moon Name

By default when you navigate/land at the company building, the moon name (Gordion) is replaced with "Company Building", you can disable this or customize what it replaces it with in the config

Configuration

  [DataPoint: MoonName]

  ## Show the full moon name (do not remove any leading numbers)
  # Setting type: Boolean
  # Default value: false
  Show Full Name = false

  ## Replace the name used for the company moon
  # Setting type: Boolean
  # Default value: true
  Replace Company Name = true

  ## Text to replace 'Gordion' if 'Replace Company Name' is enabled
  # Setting type: String
  # Default value: Company Building
  Company Name Replacement = Company Building


Configuration

Text Line Format Configuration
  [Line #1]
  ## Line #1 text format.
  ## [Lists each DataPoint but omitted here for space reasons]
  # Setting type: String
  # Default value: Ship: $%ShipLootValue%(%ShipLootCount%) / $%MoonLootValue%(%MoonLootCount%) <i>[%MoonName%:%Weather%]</i>
  Format = Ship: $%ShipLootValue%(%ShipLootCount%) / $%MoonLootValue%(%MoonLootCount%) <i>[%MoonName%:%Weather%]</i>

  [Line #2]
  ## Line #2 text format.
  ## [Lists each DataPoint but omitted here for space reasons]
  # Setting type: String
  # Default value: Quota: $%FulfilledValue% / $%QuotaValue% - Profit: $%ExpectedProfit%(%CompanyRate%%)
  Format = Quota: $%FulfilledValue% / $%QuotaValue% - Profit: $%ExpectedProfit%(%CompanyRate%%)

  [Line #3]
  ## Line #3 text format.
  ## [Lists each DataPoint but omitted here for space reasons]
  # Setting type: String
  # Default value: Deadline: %Deadline% - %DayNumberHuman% day
  Format = Deadline: %Deadline% - %DayNumberHuman% day

NOTE: The available data points show in the right panel in LethalConfig


Display Conditions and Settings

There are several conditions which change when or how the GUI is shown.

[Always Show]

This setting basically makes it so that the GUI will always be shown to the user and will updated data in real time

Configuration
  ## Should the hud elements be decoupled from the scanner? (Meaning it will always be shown on screen)
  # Setting type: Boolean
  # Default value: false
  Always Show = false

[Allow Outside]

Enables or Disables the GUI from being seen when Outside (not in the ship and not in the dungeon)

Configuration
  ## Should the scanner hud be shown when scanning outside the ship?
  # Setting type: Boolean
  # Default value: false
  Allow Outside = false

[Allow Inside]

Enables or Disables the GUI from being seen when inside the dungeon

Configuration
  ## Should the scanner hud be shown when scanning inside the dungeon?
  # Setting type: Boolean
  # Default value: false
  Allow Inside Dungeon = false

On Scan Settings

[Display Duration]

Sets the timeout for the GUI when a scan is initiated

Configuration
  ## How long in seconds should the items stay on screen. (This is ignored if Always Show is true)
  # Setting type: Single
  # Default value: 5
  Display Duration = 5

[Reset Duration Timer On Scan]

This will keep the UI timeout on scan active if the scanner is activated again.

Configuration
  ## Should the duration timer get reset if you scan?
  # Setting type: Boolean
  # Default value: false
  Reset Duration Timer On Scan = true

[Refresh Data On Scan]

Forces the scanner to do a data refresh when its active. This is not really needed as every data point is updated by event triggers but can allow you to on demand updated data.

WARNING: This can cause lag and potentially crashes if you are using macros to spam the scanner and/or are using mods which do it (like Hold Scan Button)

Configuration
  ## Should a data refresh be forced when scanning?
  ## 
  ## All data is kept updated when events are triggered (player grabs an item, items get moved into the ship, etc.) so this isn't required.
  ## 
  ## <b>IMPORTANT</B>: This could cause issues with any mod that makes the scanner always on
  # Setting type: Boolean
  # Default value: false
  Refresh Data On Scan = false

GUI Breakdown and Configuration

The GUI consists of 4 elements, a Line Graphic and three Text fields. Each one has some common configurations

[Line Graphic]

This element is used to frame the data on the screen.

Enable/Disable: Line Graphic
  ## Shows the line element
  # Setting type: Boolean
  # Default value: true
  Show Line = true
Color: Line Graphic

NOTE: Uses standard HTML Hexadecimal color codes (Can be with or with out the # sign)

  ## Line color (hex code)
  # Setting type: String
  # Default value: 2D5122
  Line Color = 2D5122

[Text Line #1]

This is the first (top) text line element

Enable/Disable: Text Line
  ## Shows Line #1 on the hud.
  # Setting type: Boolean
  # Default value: true
  Show = true
Color: Text Line

NOTE: Uses standard HTML Hexadecimal color codes (Can be with or with out the # sign)

  ## Line #1 text color. (hex code)
  # Setting type: String
  # Default value: 19D56C
  Color = 19D56C

[Text Line #2]

This is the second (middle) text line element

Enable/Disable: Text Line
  ## Shows Line #2 on the hud.
  # Setting type: Boolean
  # Default value: true
  Show = true
Color: Text Line

NOTE: Uses standard HTML Hexadecimal color codes (Can be with or with out the # sign)

  ## Line #2 text color. (hex code)
  # Setting type: String
  # Default value: 19D56C
  Color = 19D56C

[Text Line #3]

This is the last (bottom) text line element

Enable/Disable: Text Line
  ## Shows Line #3 on the hud.
  # Setting type: Boolean
  # Default value: true
  Show = true
Color: Text Line

NOTE: Uses standard HTML Hexadecimal color codes (Can be with or with out the # sign)

  ## Line #3 text color. (hex code)
  # Setting type: String
  # Default value: 19D56C
  Color = 19D56C

Custom Colors Example


GUI Layout

The layout of the HUD elements can be customized in a few ways.

Font Settings

You can customize how the font is displayed with the below configurations

[Font Selection]

You can change which font is being used by ShipLootPlus, the default is the vanilla in-game font, but if you wanted to have dollar signs or other special characters display correctly you can.

Font List:

  • Vanilla (Default)
  • Fixed (Regular version of the 3270Font which fixes the dollar sign)
  • FixedSemiCondensed (Same as Fixed but slightly more condensed)
  • FixedCondense (Same as Fixed but more condensed )

Fixed

FixedSemiCondensed

FixedCondense

Configuration
  ## Font to use for the UI elements
  # Setting type: FontList
  # Default value: Vanilla
  # Acceptable values: Vanilla, Fixed, FixedSemiCondensed, FixedCondensed
  Font = Fixed

[All Caps]

Enable/Disable all text being capitalized.

Configuration
  ## Should text be in all caps?
  # Setting type: Boolean
  # Default value: false
  All Caps = false

[Size]

Change the size of the font

Configuration
  ## Adjust the font size
  # Setting type: Single
  # Default value: 19
  Size = 19

[Character Spacing]

Change the Character Spacing of the font

Configuration
  ## Adjust the spacing between characters
  # Setting type: Single
  # Default value: -6
  Character Spacing = -6

[Word Spacing]

Change the Word Spacing of the font

Configuration
  ## Adjust the spacing between words
  # Setting type: Single
  # Default value: -20
  Word Spacing = -20

[Text Alignment]

Change the Text Alignment of the text fields

IMPORTANT: This may produce unwanted results, everything is designed to be TopLeft and changing it may cause things to not display correctly

Configuration
  ## Change the default text alignment for all elements
  ## 
  ## <b>**IMPORTANT**</b> The elements are built to stay Top Left aligned, changing this may produce unwanted outcomes
  # Setting type: TextAlignmentOptions
  # Default value: TopLeft
  # Acceptable values: TopLeft, Top, TopRight, TopJustified, TopFlush, TopGeoAligned, Left, Center, Right, Justified, Flush, CenterGeoAligned, BottomLeft, Bottom, BottomRight, BottomJustified, BottomFlush, BottomGeoAligned, BaselineLeft, Baseline, BaselineRight, BaselineJustified, BaselineFlush, BaselineGeoAligned, MidlineLeft, Midline, MidlineRight, MidlineJustified, MidlineFlush, MidlineGeoAligned, CaplineLeft, Capline, CaplineRight, CaplineJustified, CaplineFlush, CaplineGeoAligned, Converted
  Text Alignment = TopLeft

[Transparency]

Change the Transparency/Alpha of the text

Configuration
  ## Make the text elements more or less transparent
  # Setting type: Single
  # Default value: 0.95
  Transparency = 0.95

Layout Settings

The whole layout of the GUI can be customized

[Position]

You can move the location of the GUI to any place on the screen

Configuration
  ## The X position of the UI element group
  # Setting type: Single
  # Default value: 115
  Position: X (Left/Right) = 115

  ## The Y position of the UI element group
  # Setting type: Single
  # Default value: -169
  Position: Y (Up/Down) = -169

[Scale]

You can change the scaling of the GUI to make it larger or smaller

Configuration
  ## The X scale of the UI element group
  # Setting type: Single
  # Default value: 0.6
  Scale: X (Left/Right) = 0.6

  ## The Y scale of the UI element group
  # Setting type: Single
  # Default value: 0.6
  Scale: Y (Up/Down) = 0.6

[Rotation]

You can change the Z rotation of the GUI to tilt it any degree you want

Configuration
  ## This changes how much the UI element group is rotated on the screen
  # Setting type: Single
  # Default value: 356
  Rotation: Z (Tilt) = 356

[Text Field Width Offset]

You can change how many characters are displayed before it truncates, this can be helpful if you are changing the scaling.

This isn't measured in character count, only the width of the text field which is dynamically chosen based on how many lines are enabled.

The offset is just added to the width, so if you want to show more you would make it a positive value, less would be a negative value

Configuration
  ## This value allows you to offset the text field width if you want to show more or less characters on screen
  # Setting type: Single
  # Default value: 0
  Text Field Width Offset = 0

Dynamic text line scaling

The default layout is three lines of custom data, but sometimes that may be too much information, so you can disable any or all text lines if you want.

Since disabling them would normally mean a gap with whitespace, I built in dynamic scaling so that it will scale up the text lines based on how many are enabled. The only down side to this is it gives you less characters per line.

NOTE: If the line is too long it will be truncated with ellipses

NOTE: This is the closest to the original ShipLoot

Alternatively you could just disable the Line Graphic and set the Format for the line you don't want to see to an empty string (blank) to keep the original scale.


Debug Settings

This section explains the debug settings that can be enabled to assist with troubleshooting issues (generally you wont need to enable these)

[Debug Mode]

Enables/Disables debug mode IMPORTANT this will cause performance degradation unless you are using AsyncLoggers!

Configuration
  ## Enables debug logging **IMPORTANT** This will DEFINITELY cause lag and stutters as it writes a lot of debug lines, only use this if asked to help troubleshoot a problem!
  # Setting type: Boolean
  # Default value: false
  Debug Mode = false

[Disable RPC Hooks]

Disables all RPC hooks, this will have an impact on how often the data points are updated as it will have a couple less events its hooking. This really is only for times when you might be encountering error spam when an object ended up not being ready, often because of state desync.

Configuration
  ## Disable all data point refresh RPC hooks. This will impact how often the data points are updated. You can always enable 'Refresh Data On Scan' below to make it refresh faster.
  # Setting type: Boolean
  # Default value: false
  Disable RPC Hooks = false

Planned and Potential Future Features

Planned Features
  • Expand what data is able to be set in each line
    • [x] Ship scrap count
    • [x] Moon scrap value and count
    • [x] All scrap (ship + moon) value and count
    • [x] Color coded deadline (change text color based on value, 0 = red, 1 = orange, 2+ = green)
    • [x] Number of days in the ship(save)
    • [x] Same as above but human friendly format (1st, 3rd, 10th, etc.)
    • [x] Expected profit (scrap value - quota * buy rate)
    • [ ] Total Value of scrap in player inventory
    • [ ] Total Value of scrap in crew inventories
    • [ ] scrap value to meet quota
    • [x] Company buying percentage
    • [x] Weather
    • [ ] "InsideLoot" value/count (Loot only inside the dungeon)
    • [ ] "OutsideLoot" value/count (Loot only not inside the dungeon and not in the ship)
    • [ ] Current time
    • [ ] Countdown until midnight
    • [ ] Available money
    • [ ] Probably more...
  • [x] Refactor the code to be more dynamic and reliable
  • [x] Optimize scrap calculation methods for performance
  • [x] Option to disable the bounding line entirely
  • [x] Option to make the HUD elements not tied to scanning so they are always shown
    • [x] Make this honor the allow outside setting, if not allowed outside then only always show while on the ship
  • [x] Enable Rich Text support for each text field (override text formatting and color for specific elements instead of just the whole line)
  • [x] Option to change the HUD elements position (so it could be moved anywhere on screen)
    • [ ] Once this is working, remove the original ShipLoot incompatibility (so both could be ran together if desired)
  • [x] Option to change the HUD elements size/scaling (so it can be resized as well)
  • [x] Option to customize the color coded deadline colors and thresholds
  • [x] Option to customize the color coded weather colors
  • [x] Option to change font
  • [x] Option to change text settings
  • [x] Configurable timeout so you can customize how long it shows
  • [x] Expand the width of the text elements so more data can be shown before it truncates
  • [ ] Expand the amount of lines that can be enabled (from a default of 3, up to 5) with auto scaling
  • [x] Remove the "Position" drop down as its not needed since any data can be set on any line
  • [x] Rename the different line names from [Ship, Quota, Days left] => [Line1, Line2, Line3, etc]
  • [x] Make LethalConfig a soft dependency in the plugin so it can be uninstalled and ShipLootPlus still be functional
Potential Future Features (Suggestions that I may or may not do)
  • Add an additional hud element that allows you to see the exact scrap list and which items you need to make quota (would be disabled by default)
    • Make this new HUD element position configurable
    • Make this new HUD element scale configurable
  • Add the ability to send data updates to a configurable websocket endpoint via serialized json (would be disabled by default)

Dependencies

NOTE: With v1.0.1+ LethalConfig is a soft dependency but to get the best experience it is still required by the Thunderstore package. It allows you to change any setting for ShipLootPlus at any time, even landed on a moon, and it will update everything in real time. If do not want LethalConfig in your pack, you can safely remove it and this mod will still work just fine.

  • LethalConfig: Used to configure the mod while in-game with a friendly user interface
    • Soft Dependency => I have made it a soft dependency so it can be removed if desired with out breaking ShipLootPlus

Compatibility

The following are mods either tested to be compatible or not

Incompatible

  • ShipLoot: Since this is basically a full rewrite of ShipLoot, it is not compatible with it. This mod will disable the original ShipLoot if it is found.
  • Likely other mods that add similar HUD elements (at least until I add the custom position and scaling features)

Compatible (Tested by me or the community)

Font Asset Bundle Information

The font asset bundle I created for this mod can be used by any other mod developer if they want to. I've complied with the license by embedding it into the asset bundle as well as delivering it with the bundle itself.

Since I do not own the fonts and as per their license the fonts can be distributed with their license, I am making the asset bundle available to anyone who wants to use the updated versions of the three 3270Fonts in their mod.

The fonts included are:

  • 3270 Regular
  • 3270 SemiCondensed
  • 3270 Condensed

Download the font asset bundle here: https://github.com/ProfX66/ShipLootPlus/tree/main/Assets/Fonts

NOTE: Please also include the "3270Fonts-LICENSE.txt" file with your mod to ensure there is zero confusion about license compliance

Other Mods

EnhancedSpectator PreloadManager PrideSuits PrideSuitsAnimated PrideCosmetics

CHANGELOG

v1.1.0

  • Refactored the data refresh method to handle when the scrap list is null and/or a scrap item is missing required properties (should fix Issue #9)
  • Moved all Unity GameObject manipulation (changing/updating) to the main thread during data refresh
  • Added a slight delay when new scrap is brought onto the ship to avoid a race condition where the moons scrap list became desynced
  • Now correctly unloads the font asset bundle after the assets have been loaded
  • Some minor code cleanup
  • Compiled with the latest version of LethalConfig and updated the dependency version in the mod manifest
  • Compiled with the latest version of Lethal Company (v50 public release)

v1.0.9

  • Cleaned up some of the code and fixed a couple misspellings
  • Added additional null checks in every patch method to ensure nothing is used when objects are unexpectedly null
  • Added configuration option to disable all RPC hooks
    • This will impact how often the data points are updated, but it should stop any errors happening when RPC messages are received and objects aren't ready for it.
  • Added Debug Mode configuration to enable verbose logging
    • IMPORTANT this will cause performance degradation unless you are using AsyncLoggers!
  • Updated readme

v1.0.8

  • Changed most of the UI element code to be better aligned and scaled
    • Also modified the character and word spacing to be nicer
    • I also changed which HUD element my UI elements are parented to - It is now higher in the object hierarchy and directly under the "IngamePlayerHUD" object.
  • Added layout config options - You can now set the following:
    • Change the X (Left/Right) position and Scaling
    • Change the Y (Up/Down) position and Scaling
    • Change the Z (Tilt) rotation
    • Change the text field width offset (allows it to show more or less text before truncating)
  • Added font config options - You can now set the following:
    • Moved All Caps from the General section into this section
    • Change the font - I have added a font bundle for the 3 current versions of the "3270Fonts" font that the game uses (bundle includes embedded license and I added the license to my mod package)
      • Vanilla = Normal game font
      • Fixed = Currently available version of the font (fixes the dollar sign and other special characters)
      • Fixed-Semi-Condensed = Same as Fixed but slightly more condensed
      • Fixed-Condensed = Same as Fixed but more condensed

      Note: If you are a mod developer and want to use this font asset bundle, please read the "Font Asset Bundle Information" section in the readme

    • Change the font size - IMPORTANT: I must stress that changing the font size could cause the layout spacing to have unwanted outcomes
    • Change the character spacing
    • Change the word spacing
    • Change the text element alignments - IMPORTANT: I must stress that changing this will DEFINITELY have unwanted outcomes to the layout
    • Change the text transparency (alpha)
  • Changed how short data points are handled
    • You can now make any data point short by adding a ":#" inside the percent signs (e.g. %Weather:4%)
    • Renamed %MoonLongName% to %MoonName%
    • Removed the Short Character Count config setting
    • Removed the %MoonShortName% and the %WeatherShort% data points
  • Changed how the Deadline color coding works
    • There is now a whole section for the Deadline data point
    • You can enable/disable the color coding
    • You can enable/disable replacing zero with a custom string (Default: <b>NOW!</b>)
    • Set the color for each threshold (2+ days left, 1 day left, 0 days left)
    • Removed the %DeadlineWithColors% data point
  • Added a config section for the MoonName data point
    • You can enable/disable showing the full moon name (e.g. 21 Offense vs Offense)
    • You can enable/disable replacing the company moons name with a custom string (Default: Company Building)
  • Added a clear/none weather custom text string configuration - Make it blank to keep it as None (Default: Clear)
  • Added color coding with customization for the Weather data point
    • You can enable/disable color coding for the %Weather% data point
      • Support was added for the HellWeather mod so its 'Hell' weather variant can have its own color
    • You can set a custom color for each type of weather
  • Added a configuration converter so that old settings get migrated to new settings
    • This includes automatically converting any short data point that was used before to the new format using the old short character count value
    • This should also clean up the config file so there are no orphaned config entries
  • Since the layout changes made the scaling better and more concise I have changed the following default Line formats:
    • Line #1: Ship: $%ShipLootValue%(%ShipLootCount%) / $%MoonLootValue%(%MoonLootCount%) <i>[%MoonName%:%Weather%]</i>
    • Line #2: Quota: $%FulfilledValue% / $%QuotaValue% - Profit: $%ExpectedProfit%(%CompanyRate%%)

v1.0.7

  • Fixed an issue where a players dead body counted in the scrap calculation, they are now ignored.
  • Fixed a rare error when leaving a lobby after having just scanned causing the mod to stop working until a game restart

v1.0.6

  • Fixed a compatibility issue with MelonLoader where it would throw an error causing ShipLootPlus to not load correctly
  • Changed how the original ShipLoot is handled if its found, ShipLootPlus will now disable the original if its found

v1.0.5

  • Actually fixed joining a server as a client mid-round with scrap already on the ship not calculating correctly for the joined player
  • Fixed scrap values not updating correctly when placing scrap items on the counter at the company
  • Balanced the rate limiting to make it feel better when interacting with scrap

v1.0.4

  • Fixed an issue where joining a server as a client mid-round with scrap already on the ship was not calculating correctly for the joined player.
  • Fixed an issue where spamming the grab button many times a second causing the same issues as the perpetual scan which caused a game crash (buffer overrun).
  • Fixed an issue where selling items at the company would'nt refresh the data on occasion
  • Fixed an issue where moon scrap value/count wasn't updating for all players on level load until the ship had fully landed
  • Fixed patching methods that were some how not actually patching correctly
    • I also deep dived the hooked events and realized that I could remove some after I got these patches to actually apply
  • Changed the refresh method to be rate limited so if an event wants to update the values but the values are already being refreshed it will skip triggering another refresh (this should add performance in the situations where multiple hooked events trigger a data refresh concurrently)
  • Removed a left over ForceMeshUpdate() call which was not needed

v1.0.3

  • Hopefully fixed a compatibility issue with mods that modify the scanner to be able to perpetually scan (like Hold Scan Button)
  • Added a new configuration section for "On Scan"
    • Moved "Display Duration" into this new section
    • Added "Reset Duration Timer On Scan" option which will reset the timer of the UI when a scan is initialized, which keeps the UI always on screen if scanning is active (defaults to disabled).
    • Added "Refresh Data On Scan" option which will force a data update on scan, this is not really needed as all data is updated via event triggers, but it was left in the last two releases as a way to force refresh on demand. This is what is incompatible with mods like Hold Scan Button (defaults to disabled).
  • Fixed an issue where moon scrap count was showing as 1 item while in space.

v1.0.2

  • Fixed an issue where "Always On" mode did not function correctly when "Allow Outside" and/or "Allow Inside" was disabled.
  • Fixed an issue where the "On Scan" timeout didn't get reset when scanning again
  • Updated readme with better Rich Text resource links (thanks persondatlovesgames)

v1.0.1

IMPORTANT: With v1.0.1 there has been some changes which will reset any custom line formats and colors. You do not need to regenerate your configs and these settings will still be in your config file, its just that the line names and categories have changed (though now you would have extra data in the files).

  • Refactored and abstracted most of the code to be more dynamic, performant, and reliable
  • Optimized the calculation methods for getting scrap items and values

  • Changed how the data is refreshed, it is now event driven so that the data is always updated even when not being shown
    • I only hooked events that affect the data point values but it will also trigger a refresh on scan. The end result is the data will always be current.
  • Changed LethalConfig to a soft dependency so it can safely be removed (if desired) and not break ShipLootPlus
    • The Thunderstore package will still have it as a dependency as using it is the intended way to configure ShipLootPlus
  • Changed the %LootValue% replacement pattern to %ShipLootValue%
  • Changed the %DaysLeft% replacement pattern to %Deadline%
  • Changed the different line names from [Ship, Quota, Days left] to [Line #1, Line #2, Line #3] since all data points are available to all lines.

  • Added a slight angle to the UI elements so they better match other HUD elements
  • Added width to the text field so it can be longer with out truncating
    • This is dynamic based on which lines are enabled due to scaling (when I make the custom scaling system it will be configurable)
  • Added "Allow Inside" setting which works like "Allow Outside" but for inside the dungeon
  • Added "Always On" mode - Decouples it from the scanner so you can always have it on screen
    • This mode will honor the "Allow Outside" setting => False means the UI will not show outside the ship or dungeon
    • This mode will honor the "Allow Inside" setting => False means the UI will not show inside the dungeon
  • Added a configuration for duration timing (how long the UI shows after right clicking to scan. Range: 1 - 60 seconds. Default: 5 seconds)
  • Added the ability to hide the line graphic
  • Added a config for how many characters the "Short" data point variants return (Default: 3)
  • Added support for Rich Text formatting. The line color in the config is applied to the line element first, meaning rich text formatting is applied after
    • Refer to This Guide on how to use rich text formatting
  • Added the following data points:
     %MoonLootValue%      = Value of all scrap on the moon (excluding the ship)
     %AllLootValue%       = Value of all scrap (ship and moon)
     %ShipLootCount%      = Count of scrap items in the ship (excluding the moon)
     %MoonLootCount%      = Count of scrap items on the moon (excluding the ship)
     %AllLootCount%       = Count of scrap items (ship and moon)
     %CompanyRate%        = Current company buy rate
     %ExpectedProfit%     = Expected profit from scap on ship at current company buy rate
     %DeadlineWithColors% = Quota deadline in days but changes colors based on value (color thresholds will be customizable in the future)
     %DayNumber%          = Integer of days in the ship/save (E.g. 1, 3 ,10)
     %DayNumberHuman%     = Human friendly days in the ship/save (E.g. 1st, 3rd, 10th)
     %Weather%            = Current moons weather full name
     %WeatherShort%       = Current moons weather short name (Default is first 3 characters)
     %MoonLongName%       = Current moons full name
     %MoonShortName%      = Current moons short name (Default is first 3 characters)
    

  • Removed the Position drop down configuration item as it is no longer needed
    • This will be replaced with a coordinate based position system in a later update

v1.0.0

  • Release