

Unlock moons permanently or progressively reduce their costs.
Introducing new progression mechanics in Discovery Mode where you keep uncovering new moons as you play!
LethalMoonUnlocks gives players the power to customize their moon unlocking experience in a number of ways. Here's a quick look at what you can do:
LethalMoonUnlocks is a great addition to modpacks suffering from paradox of choice because you just can't stop yourself from adding more custom moons. I know who you are. You're me :)
Special thanks to Permanent Moons by BULLETBOT for the original inspiration.
Unfortunately, Permanent Moons is no longer maintained and has issues with certain custom moons (e.g., Atlas Abyss, Outpost-31) due to their names.
This was particularly frustrating in my personal modpack, where all moon prices were balanced around permanently unlocking them.
So, I took this as a learning opportunity to create LethalMoonUnlocks.
Absolutely! LethalMoonUnlocks automatically imports your Permanent Moons data from existing save files when you load them.
Any data for moons that are not installed (or enabled) at the time or can't be matched for other reasons will be discarded.
You can uninstall Permanent Moons directly after installing this mod. There's no need to start the game with both installed.
If you don't use LLL, you likely don't have custom moons, so you can continue using Permanent Moons (link above) without issue.
Note: All clients must have this mod installed!
Report issues on GitHub: LethalMoonUnlocks
Unlock Mode is the only feature enabled by default and works exactly like the original Permanent Moons mod.
In Unlock Mode, you unlock paid moons by buying and routing to them once. From that point on, the moon's route will be free.
There are configuration options available to customize your experience in Unlock Mode.
Read this section for more information.
Optional: Set unlocks to expire!
You can put a limit on how many times each unlock can be used.
After reaching the set limit of uses, the unlock expires, resetting the moon to its original price.
These options provide customization for when you're using Unlock Mode together with Discovery Mode.
For more information, read the section about Discovery Mode.
Optional: Keep access to moons once unlocked!*
When a moon is unlocked, it will be permanently discovered, meaning it's added to the moons available in the Terminal's moon catalog - on top of your base selection.
This ensures that any moon you've unlocked will always be available for travel in Discovery Mode.
Optional: Keeps things fresh by resetting discovery status on expiry!
When the unlock for a permanently discovered moon expires, it will also reset that moon's permanent discovery status, making it disappear from the moon catalog.
This is the only way permanent discoveries can vanish during a run, increasing variety in the late game.
Optional: Get rewarded for meeting quotas!
Quota Unlocks reward you for meeting a quota by granting random unlocks for free.
In Discount Mode, instead of directly unlocking moons, you will unlock a new discount rate each time you buy a moon, eventually making it free.
Discount Mode provides a balanced approach for when you think directly unlocking moons is too easy or doesn't fit your gameplay style.
There are configuration options available to customize your experience in Discount Mode.
Read this section for more information.
Optional: Set your own discount rates!
Moons will progress through a configurable list of discount rates. With each discount received, the next rate is unlocked.
You can set up as many discount rates as you like, and they don't necessarily have to go from low to high.
For example, you could set up discounts so that moons are 50% off after your first purchase, 75% after the second, and free after the third.
This would be achieved by setting the discount rates config option to 50,75,100.
Typically, the final rate would be 100 - making the moon free like a normal 'Unlock'.
Optional: Set discounts to expire.
You can put a limit on how many times a fully discounted moon can be travelled to for free. After reaching the set limit of uses, the discount expires, resetting the moon to its original price.
This option requires you to set up discount rates so that the final rate is free (100).
These options provide customization for when you're using Discount Mode together with Discovery Mode.
For more information, read the section about Discovery Mode.
Optional: Keep access to discounted moons!
When a moon is discounted, it will be permanently discovered, meaning it's added to the moons available in the Terminal's moon catalog - on top of your base selection.
This ensures that any moon you've unlocked a discount for will always be available for travel in Discovery Mode.
Optional: Keeps things fresh by resetting discovery status on expiry!
When the discount for a permanently discovered moon expires, it will also reset that moon's permanent discovery status, making it disappear from the moon catalog.
This is the only way permanent discoveries can vanish during a run, increasing variety in the late game.
Optional: Get rewarded for meeting quotas!
Quota Discounts reward you for meeting a quota by granting random discounts for free.
Optional: Get rewarded for meeting quotas!
Quota Full Discounts reward you for meeting a quota by unlocking the final discount rate for random moons for free.
In Discovery Mode, you start with a limited selection of moons for travel. You will discover new moons as you play.
The configuration options for this mode are extensive.
Read this section for more information on Discovery Mode.
Discovery Mode is all about exploration and progression, synergizing really well with having a lot of custom moons.
There are various ways to discover new moons, adding a fresh layer to the game: Moon Progression.
New moons can be discovered regularly, as rewards, randomly, or any combination of those.
There's even support for moon group matching using custom-defined groups.
This means you can set up your own moon groups (galaxies, solar systems, tiers, etc.), and when you travel to a moon, you might discover more moons of the same group.
You can also use your existing LethalConstellations for this.
But first, let's start with the basics - your base selections.
When you start a new game in Discovery Mode, your selection of moons available for travel in the Terminal's moon catalog is limited.
The number of available moons is determined by your moon base counts. There are three categories:
You can configure the base count for each of these categories, and you can also have them increase every time the current selection (or rotation) is shuffled.
By default, every time a new quota begins, the moon rotation will be shuffled, meaning the current selection is discarded, and new moons will be randomly selected.
You have options to change this to shuffle every day instead or never shuffle at all.
Every moon available for travel in the Terminal is considered a discovered moon, including the base selections.
However, as mentioned before, there are more ways to discover moons that will be added on top of your base selection.
These will also vanish when the rotation is shuffled unless you make them permanent.
Permanently discovered moons are just that - permanent. They are added on top of your base selection but do not vanish on shuffle.
Moons can be permanently discovered in various ways, depending on your configuration.
This could include:
Of course, you can also permanently discover moons from the base selections.
Permanent discoveries allow you to pick moons from your current rotation and keep them for the rest of the run.
Combined with the discovery mechanics below, this allows for granting more and more additional discoveries as the quota progresses, but to keep any of them, you have to purchase them.
This can incentivize buying moons even several days into a quota, especially when combined with Moon Sales.
The only way permanent discoveries can vanish is through the options associated with unlocks and discounts expiring.
This can enhance variety in the late game.
Optional: Get rewarded for meeting quotas!
Quota Discoveries reward you for meeting a quota by granting one or more moon discoveries.
Optional: Discover new moons while travelling!
Travel Discoveries randomly grant moon discoveries as you route and travel to paid moons.
Optional: Get more travel options as the quota progresses!
New Day Discoveries randomly grant moons when a new day begins.
Combine this with
Unlocks are permanently discoveredand you'll get additional moons to travel to from day to day, but to keep them around you have to buy them or they will vanish when the rotation is shuffled next quota.
Optional: LethalMoonUnlocks will display information about each moon directly in the Terminal's moon catalog.
Terminal Tags are disabled by default.
If you're using anything but unlocks, it's recommended to turn them on.
Terminal Tags present all information relevant to LethalMoonUnlocks directly in the moon catalog.
The tags displayed depend on the current state of each moon and your configuration.
You can enable or disable each tag individually.
Here's an example where I tried to fit all tags on a single screenshot. Explanation for each tag below.

There's a config option in the advanced section allowing you to control the maximum tag line length.
This can give the moon catalog a more organized look at the cost of more scrolling.

| Tag | Information |
|---|---|
| [IN ORBIT] | Indicates the moon you're currently orbiting. |
| [UNEXPLORED] | Indicates which moons you haven't landed on. |
| [EXPLORED: X] | Indicates which moons you have landed on and keeps track of your total landings. |
| [UNLOCK] | Indicates the moon is unlocked. |
| [UNLOCK EXPIRES:X] | Indicates how many times you can route to the moon for free before the unlock expires. |
| [DISCOUNT-XX%] | Discount Mode: indicates the moon is on discount and shows the currently unlocked rate. |
| [DISCOUNT EXPIRES:X] | Indicates how many times you can route to the moon for free until the discount expires. |
| [NEW] | Indicates the moon has been discovered for the first time this run. Resets every day. |
| [PINNED] | Indicates the moon has been permanently discovered - effectively pinning it in the moon catalog. |
| [SALE-XX%] | Indicates the moon is on sale and shows the sales rate. |
| [MoonGroups] | For example, [ZEEKERS GALAXY] or [VANILLA/FOREST]. Indicates the name(s) of the custom group(s) or LLL Tag(s) a moon belongs to. Only if moon group custom or tag matching is enabled. |
Tags are added to the moon catalog using an event provided by LLL and will also show with TerminalFormatter!
Optional: Moons have a random chance to go on sale.
Each moon has a random chance to go on sale every time the sales are shuffled.
Moon Sales are multiplicative with other price reductions like discounts from Discount Mode.
You can configure the chance as well as the minimum and maximum sale rate.
They can either be shuffled every quota or every day.
Shuffling Moon Sales daily can incentivize buying moons even days into a quota.
LethalMoonUnlocks supports matching moons by group, which is relevant for certain discovery mechanics.
In Discovery Mode, all new discoveries are randomly selected. With moon group matching, LethalMoonUnlocks will prefer selecting from group matches instead of all moons.
This is always in reference to a matching moon. For Travel Discoveries, that is the moon you've routed to, and for New Day Discoveries, it's the moon you're currently at.
Moon group matching can be enabled or disabled individually for each of these mechanics.
Additionally, when no moons can be matched, you can set that particular discovery mechanic to fall back to choosing from all moons or not.
There are multiple group matching methods available.
Match moons based on their price using the following methods:
By default any price reductions (unlocks, discounts or sales) are ignored. This can be disabled.
Picks a random LLL content tag and matches all other moons sharing that tag.
Custom allows you to define fully custom groups. A group is defined by name and a list of members (moons).
A moon will always match with all members of the same group.
If a moon is a member of multiple groups, a random group will be selected for matching.
The group name will be displayed in various locations in-game, e.g., Autopilot discovered new moons during travel to Zeekers Galaxy.
LethalMoonUnlocks randomly selects moons during Travel Discovery or for your paid rotation.
You can use Cheap Moon Bias to increase the odds of cheaper moons being selected.
This makes it less likely - especially in the early game - to only discover moons you can't afford yet or are considered too valuable.
The bias can be enabled and tweaked individually for every mechanic that randomly selects moons.
LethalMoonUnlocks is compatible with LethalConstellations!
You can even choose to group match moons by their constellation.
In Discovery Mode, only constellations with discovered moons will be visible and available for routing in the LethalConstellations screen on the Terminal.
That screen will also show the number of moons currently discovered for every constellation.
Default moons will be set to the cheapest discovered moon in each constellation.
Independent of Discovery Mode, you have the option to override the constellation prices with that of the cheapest (currently discovered) moon, which will consequently also apply unlocks, discounts, and sales to constellations.
LMU introduced a Story Lock feature that works together with JLL.
Any moons using JLL to unlock moons by performing certain actions are implicitly using it when LMU is present.
By default LMU will handle these moons as expected, only making them available after their trigger was activated.
In discovery mode this means they will be added to the pool of discoverable moons once that happened.
LMU also added its own Vanilla story progression in which you'll need to perform certain actions to gain access to Embrion and Artifice.
Spoilers in the configuration file.
You can globally disable Story Locks in the advanced configuration section which will handle story moons like any regular moon.
Tags are shown in TerminalFormatter moons node. Thanks @mrov!
Advanced config option to prefer LQ risk levels in the moon catalog.
Advanced config option to enable interpreting Malfunctions' Navigation malfunction as routing to a moon.
If it's a paid moon, LethalMoonUnlocks will see it as buying the moon - even though you didn't pay.
LethalMoonUnlocks uses a queue for sending alert messages.
Alerts from other mods and the vanilla game are added to the same queue to avoid overlapping and missing messages.
In this section, I provide some ideas of what's possible using all the different config options.
Only showing settings that are not default.
Display tags in terminal = true
Discount rates = 50,75,90,100
Discounts expire = 3
Enable Quota Discounts = true
Quota Discount trigger chance = 33
Maximum discounted moon count = 2
Enable Quota Full Discounts = true
Quota Full Discount trigger chance = 10
Moon Sales = true
Shuffle sales daily = true
A simple setup with slightly modified discounts, rewards on quota completion, and moon sales.
Display tags in terminal = true
Unlocked moons are permanently discovered = true
Enable Discovery Mode = true
Free moons base count = 99
Paid moons base count = 3
Enable Quota Discoveries = true
Quota Discovery trigger chance = 100
Maximum quota discovery moon count = 3
Enable Travel Discoveries = true
Travel Discovery trigger chance = 50
Travel Discovery group matching = true
Enable New Day Discoveries = true
New Day Discovery trigger chance = 50
New Day Discovery group matching = true
Group Matching Method = PriceRange
Price range = 500
All free and unlocked moons are always available for travel.
Three paid moons available, which are shuffled every quota. Additionally, discover new moons on completing the quota, new day, and traveling.
Buy them before the quota ends, and you keep them; otherwise, they will be lost with shuffle.
Repeat every quota and grow your catalog.
Display tags in terminal = true
Enable Discount Mode = true
Discounts expire = 3
Enable Discovery Mode = true
Never shuffle = true
Free moons base count = 1
Dynamic free moons base count = 0
Paid moons base count = 2
Enable Travel Discoveries = true
Travel Discovery trigger chance = 100
Travel Discovery group matching = true
Enable New Day Discoveries = true
New Day Discovery trigger chance = 50
Maximum new day discovery moon count = 2
New Day Discovery group matching = true
Group Matching Method = Custom
Custom moon groups = ...
Assumes fully set up custom moon groups.
Start with only one free and two paid moons. Never shuffle the base selection.
Instead, discover new moons mainly by travel and on new days. Due to moon group matching, you'll discover moons group by group.
Fully discover a group, and you'll discover moons from other groups.
Add quota rewards to preference.
Depending on the number of custom moons you have, a setup like this would probably require modifying quota steepness.