You are viewing a potentially older version of this package. View all versions.
SillySquad-Selenes_Choice-2.3.0 icon

Selenes Choice

Too Many Moons To Choose From? I Got you ;)

Date uploaded 4 days ago
Version 2.3.0
Download link SillySquad-Selenes_Choice-2.3.0.zip
Downloads 2092
Dependency string SillySquad-Selenes_Choice-2.3.0

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
Sigurd-CSync-5.0.1 icon
Sigurd-CSync

Configuration file syncing library for BepInEx.

Preferred version: 5.0.1
IAmBatby-LethalLevelLoader-1.3.10 icon
IAmBatby-LethalLevelLoader

A Custom API to support the manual and dynamic integration of all forms of custom content in Lethal Company. (v50 Compatible)

Preferred version: 1.3.10

README

Selene is the Greek Goddess of the moon.

Let her guide your crew

Selene's Choice is a Lethal Company mod oriented around unpredictability and inadvertent difficulty.

This is achieved by shuffling moons and only providing the crew access to a limited array of moons. All other moons will be hidden and locked.

The ship auto-routes to one of these moons automatically. If the quota is due, the ship auto-routes to the company instead.

The shuffle can either occur every day or only after a quota has been passed based on a setting. (default: daily)

Valid Moons

The config allows you to choose how many moons to select based on their route price:

  • Free: Route price of 0. (default: 1)
  • Paid: Route price of more than 0. (default: 1)
  • Extra: Any route price. (default: 1)
  • Rare: Route price higher than a configurable threshold value. (default: 0, threshold of 650c)

If there aren't enough moons in a category to meet the requested count, the remaining count can roll over into the extra moons category. (default: true)

Other Settings

  • Should the auto-route moon always have clear weather? (default: false)

    • This works with WeatherRegistry as well.
  • Should the shuffle exclude moons that were recently selected? (default: true)

    • Should it only remember the auto-route moon or all moons in the shuffle? (default: only auto-route moon)
    • How many days should the shuffle exclude these moons for? (default: 3 days)
    • If there are no valid moons left, should it return just one or all? (default: just one moon)
    • Should it start returning moons when there are no free moons left or not return moons until all moons are unavailable? (default: when no moons are available)
  • Discount for selected moons. The minimum and maximum price reduction percent are configurable. (default: false, 40-60% discount)

Moon Lists

  • Ignore List: Always available and excluded from the shuffle. (default: Gordion)
  • Blacklist: Always locked, hidden, and excluded from the shuffle. (default: Liquidation)
  • Treasure List: Always available but hidden, excluded from the shuffle. (default: Embrion)
    • Multiplier for the scrap count on Treasure Moons. (default: 1.25 times more scrap)

Notes

All players require the mod.

This mod is highly dependent on LethalLeveLoader functions and moon properties so any moons that are not implemented using LLL will most likely not work with this mod.

Csync should sync everyone's config settings to the host, any other important data is sent via named message.

If you find any bugs it will be faster to tell me on discord tbh.

Tips are always appreciated <3 <3 <3 <3 <3 https://ko-fi.com/impulsivelass

CHANGELOG

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