CHANGELOG

2.4.3

  • Added compat for Permanent moons. -This fixes the desynced moon list for the host on rejoin while having moons made free by PM in the shuffler. -PM didn't set the moons to be free until after the host ran their intial shuffle on rejoin, clients were always correctly accounting for PM.

2.4.2

  • Include the Cyrillic moon names from RebalancedMoons in the internal blacklist. (This means that RM no longer causes duplicate moons with Selene's).

  • Tweaked a log to account for the safety moon (No longer falsely logs "xyzMoonCount changed from (x-1) to x" where x is the real count and xyz is the type of moon (free, random, paid, rare)).

2.4.1

  • Actually fixed ship not autorouting (host calls the CLIENTrpc).

  • Save data and ship routing is now completely exclusive to the host.

  • Reworked the check for if the lobby is new or not; on joining the ship will ONLY route at start if the lobby was just created by the host. It will now never autoroute when joining a lobby or reloading an existing save.

  • Removed DontAutoRouteAtStart setting.

2.4.0

  • Fixed issue where the ship will not autoroute if called by a client before the host calls it (now only the host calls the serverrpc).

  • Added some save fortification to guarantee you will always rejoin on the moon you left off on (routing to a moon in any way will now save it to the file, manually or automatically routed should always be the most recent on the save).

2.3.6

  • Removed an apostrophe from the new config entry name (the mod works now).

2.3.5

  • Made not auto-routing when joining an existing save an opt-in setting due to it causing weird behavior sometimes.

2.3.0

  • Added a Rare Moon Count and a Rare Moon Threshold. -Rare Moons are Paid Moons that cost more than or equal to the Rare Moon Threshold value.

  • Moved all RecentlyVisitedMoons syncing to Named Messages (previously used for the seed) due to RPC (skill) issues. This should Ensure syncing works correctly for late players or players joining an existing save.

  • The Host generates a random number to start the shuffle on a new file instead of using the lobbyid.

  • All shuffles outside of 'on join' are now seeded with the randomMapSeed.

  • Added detailed logging to the shuffle, printing all moon counts and names selected in order. This is a single log message to avoid performance issues.

  • The ‘safety moon’ now logs the type it was taken from (free-random-paid-rare) (That is also the order it tries to get it in).

  • Embrion is now a treasure moon in the default config.

  • If all moon counts in the config are 0 or less, the free moon count is set to 1 to prevent issues

  • Fixed incorrect logging for the discount ‘60 to 60’.

  • Rewrote the README.

2.2.0

  • Rewrote the shuffle code to be much better- -Instead of having basically the same code over and over again I call a method that contains it using the seed argument. -With getting the 'safety moon' Check if FreeMoonCount > 0 If not then check if PaidMoonCount > 0, if not then check if RandomMoonCount > 0. When it gets the one that isn't 0 it gets a matching 'safety moon' and subtracts the respective XMoonCount by 1 to account for it. Then: -If check which are 0 again going free-paid-random, when one is more than 0 it gets that number of moons from there.

Much cleaner and easier to dev.

Bug Fixes:

  • Fixed paid/random 'safety moon' returning a null ref if you have clear weather and WR installed.

  • 'Safety moon's also get the discount applied when selected bc why not.

  • Simply use a bool to check if a save exists (to determine if it should route on join or not, doesn't route past 1 day in the file, still does, but better).

yeah basically this update makes it easier to dev since the code is not repetitive.

2.1.0

  • When no free moons are available, the mod will now select a paid level as the ‘safety moon’ instead of breaking.

  • Added two new settings for moon remembrance: Return Many Moons? Determines if the RVM should return just one or all moons when no moons are avalible.

Only Return Free Moons? Determines if the RVM should return moons when there are no more free moons left.

Interaction (RMM, ORFM:) false, false: Removes one random moon from the RVM list when no available moons remain. (Default) false, true: Removes one random free moon from the RVM list when no more free moons remain. true, false: Removes all moons from the RVM list when no available moons remain. true, true: Removes all free moons from the RVM list when no more free moons remain. (Past Version)

  • Updated Roll Over Paid Moons to be Roll Over Moons which rolls over both paid and free moons to the random moon count if there are limited free or paid moons at the time.

  • Fixed the ship not auto-routing to the company when the quota is due and the shuffle only occurs on quota change.

  • Rewrote some silly things in the code, maybe fixing a few minor desyncs or just weird/wordy code being tweaked.

2.0.1

  • The mod now functions correctly when Weather Registry isn't installed.

2.0.0

  • Moved from UnityEngine.Random to System.Random, its a miracle anything in this mod worked beforehand tbh.

  • Added settings to keep 'RecentlyVisitedMoons.' By default this only saves the 'safety moon.' But can be set to affect all selected moons. Moons are held on that list for 3 days (configurable). While they are on the list, they will remain locked/hidden and be excluded from the shuffle.

RVM Notes: -After moving to the next day, the shuffle will start the moons at day 0. -If the moon is in the list already, it will gain 1 day when you move to the next day. -Once the moon hits the target days (3 by default), it will be immediatly returned to the shuffle. -The Company is completely exempt from this feature for obvious reasons. -When the quota is due, the moons selected while the crew goes to sell goods will not be added to the RecentlyVisitedMoons list. -After spending a day at the company, the moons in the list will NOT move forward a day, if it was at 2, it will stay at 2. No cheating. -If there are no more free moons to selected as the 'safety moon', all free moons in the RVMs will be removed immediatly and put back into the shuffle. -All current data related to the RVM list is cleared on disconnecting to prevent data spreading between games. -**This feature uses savedata so the RVM list itself and the dictionary of days spent in the list will be saved to the file, rejoining will restore the feature where it left off. -EXPERIMENTAL: This feature should be networked between the host and clients through rpcs but I was unable to test throughly in multiplayer, please tell me if it breaks and give me LOGS!

  • Added soft compat with WeatherRegistry so that the 'safety moon' can still be cleared with WR installed.

  • The current # of random moons to be loaded in now resets itself back to the config value (or the config value + paid moons if that setting is enabled and there are no paid moons.) This prevents it from getting stuck being lower than config due to the RVMs growing as it now bounces back up as moons become available again.

  • Regardless of when the game shuffles, when there are 0 days left until the quota is due, the ship always auto-routes to the company.

  • The ship auto routes to the 'safety moon' after passing a quota even when it is set to only shuffle on New Quota.

1.5.7

  • On joining, only the host sets the current moon, clients will already inherit the current moon from the host from vanilla.

1.5.6

  • Fixed the ship not auto-routing after a reset.

1.5.5

  • Changed how routing to moons automatically is coded, this now allows it to be animated and is synced again through vanilla calls.

(old was calling changelevel and changeplanet) (new is calling just changelevelserverrpc)

1.5.0

  • When joining a save that is not brand new, the ship will not auto route to the "safety moon", it will remain on the moon you left off on.

  • Added new configuration options for moon discounts, you can set the min and max % of the route price on selected moons that will be taken off.

1.4.5

  • Because The story log moons are a specific set list, they are now directly written into the exclusion list. A new configuration boolean has been added to determine if they should be excluded from the shuffle. (Default: true)

  • The story log moons are now completely untouched by this mod.

  • Added a configuration option to always have clear weather on the ‘safety moon’. (Default: false)

  • All shuffles now include a 2-second wait for Terminal Formatter.

  • If both the clear 'safety moon' weather and the ‘New Moons Only on New Quota’ options are set to true, a method has been added that sets the last saved ‘safety moon’ to have clear weather. This ensures that the ‘safety moon’ will never automatically change its weather, even if you only have a shuffle on quota.

Note: Despite the waits for Terminal Formatter, it may still load too soon. This will be addressed in a future update by mrov.

1.4.0

  • The seed used for moon selection, which was previously saved to the host, is now saved to the specific save file itself. This means that the seed now will remain consistent with each individual save file, allowing for seamless switching between saves while maintaining the last loaded moons for each save !!

  • Added another config list, it is treated the exact same as the blacklist but the default moons for the setting are from Rosie's Moons, which now need story logs in order to unlock.

  • Some classes were made into singletons.

  • The wait time for the Terminal formatter has been reduced from 3 seconds to 2 seconds, which should still provide ample time for processing.

1.3.6

  • Added a slight delay at the start of the match to allow Terminal Formatter to load.

1.3.5

  • Fixed inconsistence join seed.

  • If there are no paid moons left, the count for them will roll over into the random moon count.

1.3.0

  • Added config for a set # of paid moons to have included. (If there is 0 when it gives the moons it will just not add those)

!!! DELETE YOUR OLD CONFIG !!!

1.2.0

  • Added a 'treasurelist'

  • Treasurelist moons are always hidden but can be routed to.

  • Config to enable a bonus for treasurelisted moons and the multiplier. (default: 1.25 times scrap)

  • Reworked the logic on a client joining so that it directly waits until after data is processed before proceeding. This should further safeguard against desyncs on join.

1.1.0

  • Refactored out all instances of the mod's deadname.

  • Split the moon count config in two. Now you can set the amount of free moons and the extra moons that can either be free or paid separately.

  • Added an IgnoreList to the config, these moons will be unaffected by the shuffle, always visible and routable.

  • Added a BlackList to the config, these moons will be unaffected by the shuffle, never visible or routable.

  • The code no longer uses the exact moon list ###s, instead it will first autocorrect those to a dynamic range before using them. (Free is 1 to # of free moons) (Extra is 0 to # of total moons after the free ones are accounted for) (I couldn't just use the AcceptableBaseRange since the values can change throughout a playthrough (Think permanent moons))

  • When there are 0 days left until the quota is due, the daily shuffle will send the ship to Gordion instead of the "safety moon."

  • The lists that I use now strictly exclude moons by name. Since it no longer uses the Company tag, Sector-0 from Rosie's moons is no longer excluded by default.

  • Added a whole bunch of logs to track difference things, I forgor which ones were in 1.0.0 but rn logs track:

  1. All levels that are listed. (excludes the Ignore and Blacklist)
  2. How many of those levels have a price of 0 and are therefore part of the free list.
  3. If the current list of all levels or all free levels changes, the log will declare what it is set to now and what it used to be.
  4. Logs the seed put into the respective random generator.
  5. What the "safety moon" is.
  6. Whenever the host has a new value set for the two variables that are sent to players that just joined.
  7. When the host and client respectively receive transmitted data.
  • I also added some more comments to the code to explain what the stuffs is doing.

!!! DELETE YOUR OLD CONFIG !!!

1.0.0

  • Initial Release