Giter VIP home page Giter VIP logo

lethalquantities's Introduction

Lethal Quantities

A flexible customization mod that works with other mods. Now comes with a WEB UI! All configs are disabled by default. Please request features or report issues here. Configs are generated after you host or join a game

Features

  • Provides optional(disabled by default) settings to enhance your Lethal Company experience
  • Some more control over how many enemies spawn, and on what moons
  • Change scrap min and max values, and rarity per moon
  • Change scrap amount and value multipliers per moon
  • Works with custom levels
  • Works with custom items
  • Works with custom enemies
  • Works with custom traps
  • Works with custom dungeon flows
  • Works with per-moon prices to travel to other moons
    • Make travel cheaper between certain moons to emulate star maps!
  • Should work with custom events and other mods that change enemy spawn settings
  • Comes with a web UI to make it easier to edit

Known Incompatibilities

  • Moon price changing mods
    • If you modify moon prices with LethalQuantities, other mods may not be able to change the price correctly, or at all.
    • For developers:
      • The moon prices are set in a prefix for StartOfRound.ChangeLevel with a priority of 200. You can add your own prefix(with a higher priority value) or postfix to ensure that your prices are set properly.

Pictures

Welcome screen Preset menu Editor

Configuration

Web UI

Configuration is now managed through the web UI. The old config files are deprecated and should not be used. To use the new web UI, first host or join a game, then edit the LethalQuantities/Advanced/Preset.json file in the config folder with the web UI. Once complete, download and save it to the same file(LethalQuantities/Advanced/Preset.json), and restart the game.

Legacy

However, in the case that you need to or can only use the config files, you can enable the UseLegacy option in the global config to allow the legacy configuration files to take priority over whatever is set through the web UI. You must host or join a game at least once to generate the configuration files. Any missing or deleted files will be generated with the default options. By default, the only file that is generated is Configuration.cfg. You must enable global config files and individual moon config files in order to modify anything.

  • Configuration.cfg - Enable/disable other configuration files here

Global/local option inheritance

This mod uses global/local config files to reduce the amount of configuration and files required. For certain options in the configs, you can use the value DEFAULT(case insensitive) to use the vanilla value that would normally be used. For certain options in the moon config files, you can use the option GLOBAL(case insensitive) to use values in the global config files. If the global config file is DEFAULT, then it will use the vanilla value. If the global config does not normally have a default value, for example, rarity(since it's moon specific), then it will use the moon's default value. So, if a moon has GLOBAL for an enemy's rarity, and the global config does not exist or has DEFAULT, then it is the same as if the moon option is DEFAULT. Moons have higher priority over global config options, so if both have a value set, the moon's value will be used instead. For options that allow GLOBAL, a blank value is the same as GLOBAL, and for options that allow DEFAULT but not GLOBAL, a blank value is the same as DEFAULT. If a global config file is disabled, then it will have no effect on moon options that are set to GLOBAL and is equivalent to DEFAULT. A value of DEFAULT should not override values set by other mods.

Complex config types:

  • AnimationCurve - Represents a curve comprised of Keyframes. Each frame represents a key, and a value at that key(generally time). For more information, and a visual representation, check out the mechanics.
    • A curve with no frames is specified with a 0.
    • A curve with one keyframe is described with a single number. This option is recommended for most users unless you know what you are doing.
    • A curve with multiple keyframes is comprised of a keyframes(key:value) separated by commas
  • Global/inheritable options - Represents an option that can be inherited from the global configuration. Generally found in the moon configs.
    • GLOBAL or no value uses the global value
    • DEFAULT uses the default local value
    • Any value that is neither will be used directly instead
  • Defaultable options - Represents an option that can be modified, or left default/empty to do nothing. Generally found in the global config. If a moon specific option(like rarity) is left default, then it will use the moon's default value
    • DEFAULT or no value uses the default value
    • Any value that is not DEFAULT or empty will be used directly
Enemies

There are 3 different enemy configuration files:

  • Enemies.cfg - Responsible for all enemies that spawn inside.
  • DaytimeEnemies.cfg - Responsible for enemies that can spawn outside, but normally passive ones.
  • OutsideEnemies.cfg - Responsible for all enemies that can spawn outside, but normally hostile ones.

These configuration files do not interfere with each other, meaning enemies spawned based on one config will not count towards settings from another config(such as MaxEnemyCount, EnemyHp, etc).

Options

  • General
    • MaxPowerCount - Maximum total power allowed for this category of enemies. Different enemy types have different power levels. The total power of a level is the sum of the power levels of all existing enemies.
    • SpawnAmountCurve - An AnimationCurve with a key ranging from 0 to 1. The key represents the percentage of time progressed in the current level. The value is the amount of enemies to spawn at the given time.
      • For example, a curve described by 0:-3, .6:1.5, 1:15 would mean that for the first 60% of the day, almost no enemies are going to spawn, but for the last 40%, a lot will spawn.
    • SpawnAmountRange - The range of enemies that can spawn. A value of 3 means that 3 more or 3 less enemies can spawn, based on the value returned by the SpawnAmountCurve. Not available for outside enemy configs. This value must be greater than or equal to the amount of days at the start of the quota divided by 2, rounded up.
  • EnemyType - There is one section for each enemy. Invalid enemy types are ignored.
    • MaxEnemyCount - The total amount of enemies of the given type that can spawn
    • PowerLevel - How much power an enemy of the given type counts for
    • GroupSpawnCount - How many enemies will spawn together at once. Will not spawn more than allowed by the maximum power level.
    • SpawnCurve - An AnimationCurve from 0 to 1. The key represents the percentage of time progressed, much like SpawnChanceCurve. The value normally ranges from 0 to 1, and is multiplied by Rarity to find the weight. For more information, view the Spawn Logic section below
    • StunTimeMultiplier - The multiplier for how long an enemy can be stunned.
    • DoorSpeedMultiplier - The multiplier for how long an enemy takes to open a door.
    • StunGameDifficultyMultiplier - I don't know what this option does.
    • Stunnable - Whether or not this enemy can be stunned.
    • Killable - Whether or not this enemy can die.
    • EnemyHp - The amount of health an enemy has. A shovel does 1 hit of damage by default.
    • SpawnFalloffCurve - An AnimationCurve describing the multiplier to use when determining the value of SpawnChanceCurve, dependent on the number of existing enemies with the same type divided by 10. Not available for the daytime enemy configs.
    • UseSpawnFalloff - If true, then the resulting value from the SpawnFalloffCurve will be multiplied with the value from SpawnCurve. Not available for the daytime enemy configs.
  • Rarity - There is one option for each enemy type. Invalid enemy types are ignored.
    • <enemy type> - The weight given to this enemy vs other enemies. If you do not want the enemy to spawn, set the rarity to 0. A higher rarity increases the chances for an enemy to spawn. The chance of this enemy spawning is the rarity of this enemy divided by the rarity of all the enemy types combined.

Exceptions:

  • The OutsideEnemies.cfg option SpawnChanceRange has a hardcoded value of 3 in-game, and cannot be changed
  • The DaytimeEnemies.cfg does not use SpawnFalloffCurve when calculating the total rarity.
Scrap

There is 1 scrap configuration file.

  • Scrap.cfg - Responsible for all scrap generation

These configuration values can be set per moon. Store items and items share the same spawning pool and are not separate.

Options

  • General
    • MaxScrapCount - Maximum total number of scrap items generated in a level, inclusive.
    • MinScrapCount - Minimum total number of scrap items generated in a level, exclusive.
    • ScrapValueMultiplier - Multiplies the value of a scrap item by this multiplier.
    • ScrapAmountMultiplier - Multiplies the total number of scrap on a level by this multiplier.
  • ItemType - There is one section for each item.
    • MinValue - The minimum value of this item, inclusive. Only available for scrap items.
    • MaxValue - The maximum value of this item, exclusive. Only available for scrap items.
    • Weight - The weight of the item. The real in-game weight can be calculated with the formula: pounds = (value - 1) * 100. For example, a value of 1.18 is 18lbs. Can only be set in the global scrap config.
    • Conductive - Whether or not the item can be struck by lightning.
  • Rarity
    • <item name> - The weight of this item, relative to the total weight of all items. A higher rarity increases the chances for an item to spawn. Includes store items. The chance of this item spawning is the rarity of this item divided by the rarity of all the items combined.
Dungeon Generation

There is 1 dungeon generation configuration file.

  • DungeonGeneration.cfg - Responsible for configuring values that affect dungeon generation

These configuration values are set per moon. They should theoretically support custom dungeon flows.

Options

  • General
    • MapSizeMultiplier - A multiplier for how large the dungeon generation should be. Cannot be set per-flow
  • DungeonFlow - There is one section for each DungeonFlow
    • FactorySizeMultiplier - A multiplier for how large the dungeon generation should be for this flow.
  • Rarity
    • <dungeon flow name> - The weight of this flow, relative to the total weight of all flows. A higher rarity increases the chances for this flow to be used. May not work with custom dungeon flows since LethalLevelLoader forcefully overrides this.
Trap Spawning

There is 1 trap configuration file

  • Traps.cfg - Responsible for configuring how many traps can spawn inside

These configuration values are set per moon. They support custom traps.

Options

  • Trap - There is one section for each trap type
    • SpawnAmount - The amount of this trap to spawn. This is an AnimationCurve, where 'Y Axis is the amount to be spawned; X axis should be from 0 to 1 and is randomly picked from.'
Prices

There is 1 price configuration file

  • Prices.cfg - Responsible for configuring pricing per moon

These configuration files are set per moon. They support custom moons.

Options

  • Level - There is one section for each moon
    • TravelCost - The amount in credits that it costs to travel to this moon. Note that you cannot travel to the moon you are currently on, so it has no real effect. You can charge to go to The Company Building, but it does not display until you confirm.

Spawn Logic

The enemy spawn logic in Lethal Company is a bit complex, and there are many additional variables that I did not make configurable. It would require a fairly large recode, and it would be more likely to cause problems with other mods. That said, here are some basic things to keep in mind when configuring enemy spawning:

  • This is the vanilla behavior. This does not apply to mods that implement custom spawning algorithms.
  • The number of vents does not limit how many enemies can spawn indoors
  • The AnimationCurves dependent on time are always from 0 to 1. This includes if the total amount of hours is changed by another mod, or if the day progresses slower/faster.
  • The AnimationCurves are not a linear progression from one frame to another. It is modelled by Unity's AnimationCurve, and therefore probably a smooth line
  • The total enemy power level will not exceed but can equal the maximum power count
  • There is a minimum amount of enemies that will spawn if certain conditions are met, such as an eclipse
  • No more than 20 enemies can spawn at once
  • The total amount of enemies that can spawn is calculated first; the enemy types to spawn are determined afterwards
  • The chance of an enemy spawning is weight of enemy type / total weight, where the total weight is the sum of the weights of all enemy types
  • The weight of an enemy type is rarity * spawn chance at the current time . If UseSpawnFalloff is enabled(like baboon hawks), then it is rarity * spawn chance at the current time * spawn falloff multiplier at the current time. Spawn falloff multiplier has a curve with a key that is the total amount of that mob / 10.

Roadmap

  • Copy and paste functionality on web UI
  • Add host config syncing
  • Preferences for the web UI
  • Moon difficulty rating and description editing
  • Default values for empty fields in the web UI
  • Statistical display of overall generated presets
  • Weather customization
  • Per dungeon flow and weather settings
  • Additional settings
  • Lights out?

lethalquantities's People

Contributors

bananapuncher714 avatar simmmmms avatar

Stargazers

 avatar Fluffy avatar 小日光TShine avatar  avatar BaddCamden avatar

Watchers

 avatar BaddCamden avatar

Forkers

simmmmms

lethalquantities's Issues

Issue with Lategame Upgrades contracts

Hello, i found an issue with the mod lategame upgrades, when i launch a contract on a moon i'm having no monsters spawns(lategame upgrades modder told me they are supposed to spawn like usual) when lethal quantities is on, while my lethal quantities is setup to spawn a lot of monsters without it they do spawn but vanilla rate

Scrap config breaks the game

When I have the Scrap config enabled/change the max/min scrap value, the game starts and runs fine, until I land on a moon where I edited the scrap config and it just gets stuck at "waiting for crew..".

Confused how to set enemy/etc spawns

For example, I try to modify Vow and set all the enemies to Rarity=0, MaxEnemyCount=0, except the one spawn that I want to appear--which I gave a high rarity value (does that make it more or less common relative to others)... Still all kinds of monsters appear but the one I intended, any tips?

Can't spawn more than 502 items

Hello! First of all, thanks for your mod! Everything seems to work apart from one thing: i wanted to see, just for fun, how many items my computer could take without exploding, but noticed that if i set to spawn a minimum of 1000 items, it spawns only 500. Could it be that there is a hard limit that can't be surpassed?

P.S I tried again now, just to confirm, and with a minimum of 1000 items it spawned 428

Question: Generic attributes

Is there a way to edit generic attributes that are non-moon specific?

If not, you could make a config that has how many mobs can spawn, and with a boolean that if true will make it apply to all moons.

Definitely much more convenient than manually editing each moon file.

NPC refusing to spawn

after i modified the powerlevel of a moon and of a enemy they refuse to spawn inside the facility. help?

Every item is generated max value if using local config

I see it was reported in #41, just want to provide additional info in case you need it.

Testing with LQ+Detailed Scan only.

018d3528-5063-367f-28f2-f6aa4846f29f - only global configs enabled, everyting is fine, scrap is generated with different values.

018d3530-487b-1f69-5982-b7eb1b2c693b - enabled local configs and disabled globals, no other changes (same with globals on) - every item is generated with max value e.g. V-Type Engine = 140 * 0.4 = 56.

018d3539-a5ff-0dd7-ce71-94d495f79363 - final test. I change
global values of V-Type engine
and local values of Large Axle on Experimentation
to 500/1000.
Both items generated 1000 * 0.4 values.

My guess is mod reads min scrap values from MaxValue in local config since it happens both if specified and through inheritance.

Scrap Generation Issue

I was experimenting with thematic scrap generation based on interiors and encountered a bug which stops the level from loading if certain scraps are used. Initially I only tested this on Infernis with plans to try it on Atlas Abyss and Starlancer's Auralis, however on a whim I tried the same scraps on Titan and got the same error. I haven't tried everything yet, as I only made it halfway through my scrap catalog, but at least these items don't generate.
Screenshot 2024-01-30 220944
This is a picture of what happens on Infernis, it's consistant across all the planets I've tried.
Screenshot 2024-01-31 151046
The confusing thing about this is that I CAN set their values to 0 to prevent their spawning, but I can't increase it. If any scraps generate via Quantities influence the game refuses to load... but they WILL load if I don't even bother altering the values all together.
20240130220930_1
I'm pretty sure this is a quantities bug? Still sort of new to figuring out what causes what.

Bug with skinwalkers mod

It seems there is a bug between Lethal Quantities and Skinwalkers, it's a shame since they are both god tier mods. When i use both the skinwalker mod doesn't seem to care about the config file and puts either everything on true or everything on false depending the version (i tried with multiple versions of both mods)

No configs.

have tried starting a game with mod loaded. no config generated. u sure your mod works?

Max/Min Scrap Default Value Default is {0}

If I go under a specifics moons Scrap file, it says under Default {0}

[General]

Minimum total number of scrap generated in the level. The default value is {0}

Setting type: String

Default value: GLOBAL

MinScrapCount =

Maximum total number of scrap generated in the level. The default value is {0}

Setting type: String

Default value: GLOBAL

MaxScrapCount =

This is fine for the Vanilla moons because I can just google it but for custom moons I'd like to know what the mod developer set to adjust accordingly.

P.S. Love the work you've been putting into this mod. I'm in love with it. Keep up the great work.

Outside & daytime enemy configs don't seem to get respected

image
Everything seems to work fine with inside enemies and their spawn rarities and such, but outside enemies don't seem to spawn properly regardless of what you set them to.

Here's a basic pack I just made for testing with the values I'm using in my own mod pack. I'm just going to Experimentation should be having Baboon Hawks & Hoarding Bugs spawn outside at 75 & 56 rarity respectively, but only Eyeless dogs & earth leviathans are spawning in my game. 018d6272-dc6b-4dde-75cd-4b80125a6dd5

As well, here are BepInEx logs & actual game logs
LogOutput.log
Player.log

Thank you for any help in advance!

Trap configuration?

Do you plan to add the ability to configure the spawning of landmines and turrets in the future? I'd find it really useful for balancing out moons a little better.

resseting values curve

i am using 0:0, 0,5:3 0,7:5, 1:3 and the game reset it to the default. i tried everything you tell me but it doesnt save it just put the default when you reset 2-5 times the game. like in daytime it works but it reset the values for no reason its strange

Config will not work

i was customizing the amount of loot that would spawn keep in mind this has worked before but now it will not spawn anything even with saving and launching with modded version

Not an issue, but is this host only?

im trying to balance some stuff so me and my bro can get to high quotas with only 2 players. he cant download mods so im wondering if only the host needs this mod.

Question and possible Bugs: How do I tweak the "SpawnAmountCurve"?

So... I understand that the AnimationCurves dependent on time are always from 0 to 1.
I understand that the AnimationCurves are not a linear progression from one frame to another, and they're modelled by Unity's AnimationCurve.

What I don't understand is how do we change it so it could work in our game?
Let me explain, here I took March as an example.
I changed its SpawnAmountCurve from its original "4.410501" to "1.410501" and observed its result.
Mod Pic 001

Inside the game, I used another mod called "ScanForEnemies" to observe the enemy spawns. However, I immediately notice the game listed all of its monsters despite it didn't actually spawn any of them. (I didn't check thoroughly)
Mod Pic 002

Also, since I've tweaked all monsters' power levels, the value just doesn't make sense. (The total enemy power level will not exceed but can equal the maximum power count.)
I made is so that March had a "MaxPowerCount = 7" for inside enemies, and a single "FlowerMan" had 6 Powerlevel, making it odd for the mod to violate its own spawn rule. (I'll skip other monsters' power levels, knowing their total power level already exceeded the maximum power count I set for the moon)

Then, when I walked outside the ship, I found a floating bunker spider twitching in the sky...
Mod Pic 003

I tried to debug it myself. I first disabled both "OutsideEnemies.cfg" and "DaytimeEnemies.cfg", leaving only the "Enemies.cfg" active. Then, I re-started the game, landed on the moon and found similar result.
After that, I changed the value back from "1.410501" to "4.410501", and the mod seemed to be working normal this time. But, the floating twitching bunker spider was still there XD!!! And I presume there's one on every single moon as I've found it everywhere I go, it always spawn on the ship's left side. (Spider from offense.)
Mod Pic 004

At this point, I think I need some help... Thanks.

Edit: I tried using the original cfg files generated by your mod without changing any value inside. The result is the same:
Under normal circumstances, the list shouldn't be like this, it should only contain the enemies currently on that moon when the ship first landed. Then, as the game progress, newly spawned monsters will be slowly added to the list.
I honestly don't mind that spider as it's funny as hell, but I do hope you can fix the list.
Mod Pic 005

Question or Bug No.2:
It's also a little bit weird that your mod prints out a log that's not the adjusted value but the game's default value.
Mod Pic 006
Mod Pic 008

Question: Can you check if your mod works with weather?

I haven't checked this, but... After browsing through the config files, the "bunker spider" stood out for me.
Its default "MaxEnemyCount = 1" but for numerous occasions, I've encountered more than 1 bunker spider on moons with weather conditions (presumably Eclipse).
This made me wonder how does weather affect enemy spawn? MaxEnemyCount and such, and the fact wether your mod takes those into account. Thank you!

Incompatibility with mod RouteRandom

If both this mod and RouteRandom by stormytuna are installed, the game will throw the following errors after loading into the ship:

[Error  : Unity Log] NullReferenceException: Object reference not set to an instance of an object
Stack trace:
LethalQuantities.Patches.StartOfRoundPatch.updateMoonPrices (SelectableLevel level) (at <1f84666f1c6b4ad983e910ad04a755bb>:IL_0047)
LethalQuantities.Patches.StartOfRoundPatch.onPlanetChange (StartOfRound __instance) (at <1f84666f1c6b4ad983e910ad04a755bb>:IL_0001)
(wrapper dynamic-method) StartOfRound.DMD<StartOfRound::ChangePlanet>(StartOfRound)
StartOfRound.SetTimeAndPlanetToSavedSettings () (at <af9b1eec498a45aebd42601d6ab85015>:IL_00D6)
(wrapper dynamic-method) StartOfRound.DMD<StartOfRound::Start>(StartOfRound)
(wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition.Trampoline<StartOfRound::Start>?-623011064(StartOfRound)
LethalLib.Modules.Items.StartOfRound_Start (On.StartOfRound+orig_Start orig, StartOfRound self) (at <4eedb4dc36094adcb65137cf81f2803d>:IL_0178)
(wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition.Hook<StartOfRound::Start>?1141828628(StartOfRound)
(wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition.Trampoline<StartOfRound::Start>?-104168982(StartOfRound)
LethalLib.Modules.Utilities.StartOfRound_Start (On.StartOfRound+orig_Start orig, StartOfRound self) (at <4eedb4dc36094adcb65137cf81f2803d>:IL_019C)
(wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition.Hook<StartOfRound::Start>?197535880(StartOfRound)

[Error  : Unity Log] NullReferenceException: Object reference not set to an instance of an object
Stack trace:
LethalQuantities.Patches.StartOfRoundPatch.updateMoonPrices (SelectableLevel level) (at <1f84666f1c6b4ad983e910ad04a755bb>:IL_0047)
LethalQuantities.Patches.TerminalPatch.onTerminalStartPrefix (Terminal __instance) (at <1f84666f1c6b4ad983e910ad04a755bb>:IL_0015)
(wrapper dynamic-method) Terminal.DMD<Terminal::Start>(Terminal)
(wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition.Trampoline<Terminal::Start>?966825162(Terminal)
LethalLib.Modules.Enemies.Terminal_Start (On.Terminal+orig_Start orig, Terminal self) (at <4eedb4dc36094adcb65137cf81f2803d>:IL_0336)
(wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition.Hook<Terminal::Start>?-1917963924(Terminal)

The effects of this are that the deadline shows "7 days, 3 hours" and a quota of 509 for whatever reason, the main monitor shows no moon info and if you use the terminal you can't exit out of it anymore. So basically the game isn't playable with both these mods installed.

Global Scrap

Hello sir :) I think i found a bug with global scrap, i enabled global scrap in configuration added zapgun rarity to 100 that's it and i'm stuck on waiting for crew when i launch the ship

Maybe i did something wrong ?

ps: "per moon" appear to not have this problem

Common names

I'm guessing the names used are the game's internal monster code names, however it's quite inconvenient for a modder to have to guess or go in and test every spawn--is there any chance you can atleast add the official aliases in the mod e,g, Crawler -> aka Thumper
This would make things more user-friendly imho.

How does SpawnChanceCurve works ?

Can you help me understand how SpawnChanceCurve works ?
for exemple : SpawnChanceCurve = 0:1, 0.1073834:1, 0.1368088:0, 1:0
I have no idea what this numbers stand for.
And why in the exemple there is 3 commas and sometimes there is only one like this : SpawnChanceCurve = 0:1, 1:1 ?

Setting enemy spawns to zero

For some reason it doesnt prevent the entities from spawning. I have a few other mods but none of them should prevent this behavior.

Outside enemies spawning inside

Recently, when using this mod, I've noticed that the game spawns Earth Leviathans inside the facility.

Since the mod list I was using was quite expansive, I wasn't sure if it was this mod specifically or something else interfering, but after putting together a mod list of just this mod, lethal days, and better saves, it still happened. r2modman profile code: 018d5252-97bb-43a6-bae6-6468291ca18d (I added some mods afterwards to make finding the enemies easier)

My method of testing was: 1. start the game, 2. land on experimentation, 3. go inside, 4. look at the console until it said that an earth leviathan got added, 5. if the power limit was reached before that, quit and go to 1, otherwise, 6. try to find the earth leviathan.

I have also seen it add eyeless dogs but didn't manage to find them.

AdvancedCompany incompatibility/Scrap values incorrect

I've found that enabling the scrap config for a planet means that any scrap spawned will share the same value with that same piece of scrap found elsewhere. Also, the scrap value modifier for the total scrap value doesn't seem to do anything anymore.

I also think there's a few compatibility issues with the newest version of AdvancedCompany. It appears to override any changes made by this mod.

Custom moons stuck on "waiting for crew" on second game of session

Currently using multiple custom moon AND custom scrap mods. Since custom scrap does not spawn on custom moons by default, I wanted to use this mod to solve that. Whenever I open the game for the first time and host a file, it takes a really long time to load in, which I assume is the config files loading or something. All custom moons generate as expected with custom scrap. If I leave the file and start another one, it will load nearly instantly, but all custom moons will be stuck on "waiting for crew" when I try to load them (vanilla moons work fine). If I completely restart the game and start a new file, it will load for a long time again and custom moons will load normally, until I leave the file and start another one, which sticks me on "waiting for crew".

Weird animation curve problem

Tested with only BepInExPack+LethalQuantities installed.
018ce396-f202-f3a7-50ae-832045bbf4cb

When I first load the game it creates config files with default animation curves like (Experimentation/Enemies):

SpawnAmountCurve = 0,001541138:-3, 0,4575331:4,796203, 0,7593884:4,973001, 1:15

Which is weird I guess cause it should use period, right?

On second load, existing configs, no changes made by me, console gives error for every animation curve:

[Warning: BepInEx] Config value of setting "General.SpawnAmountCurve" could not be parsed and will be ignored. Reason: Index was outside the bounds of the array.; Value: 0,001541138:-3, 0,4575331:4,796203, 0,7593884:4,973001, 1:15
[Warning: BepInEx] Config value of setting "EnemyTypes.BaboonHawk.SpawnFalloffCurve" could not be parsed and will be ignored. Reason: Index was outside the bounds of the array.; Value: 0:1, 0,1022146:1,954167, 0,2093059:2,709228, 0,3081509:1,460442, 0,5155956:0,7506728, 1:0,2186031
[Warning: BepInEx] Config value of setting "EnemyTypes.Blob.SpawnChanceCurve" could not be parsed and will be ignored. Reason: Index was outside the bounds of the array.; Value: 0:1, 0,5870568:0,9988297, 1:0,9582062
...
etc

If I try to change values using periods:

[Warning: BepInEx] Config value of setting "General.SpawnAmountCurve" could not be parsed and will be ignored. Reason: Input string was not in a correct format.; Value: 0:0, 0.5:2.5, 1:15

Need help, what am I doing wrong?

Very slight issue with WastelandMoon

When ran alongside AdvancedCompany, the audio is completely muted when you first load into a save. Yes, you can chance the audio setting and it resets it appropriately, so this isn't too big of an issue, but I still thought I'd bring attention to it since I noticed it still wasn't patched out. Love this mod and hope I can use it in my modpack without breaking anything. I've also had issues where the config file never generates, instead just giving me a blank file. If I figure out which mod is responsible, I can open another issue here if it helps.

bug enemies and outsite enemies

dont work, just dont spawn nothing and sometimes it change it to the vanilla, if you put it false or vanilla it just dont work nothing and no enemy spawn

Shotgunless Nutcracker

I think this may be another case of scrap not generating properly. For some reason Nutcrackers spawn without their shotguns resulting in this spammed error. While they still act like they've got a shotgun by occasionally shooting, accompanied by the ringing tinnitus SFX, but it deals 0 damage and they'll almost exclusively begin kicking.
Screenshot 2024-01-31 230132
I thought it might've been another mod, but upon testing the removal of LethalQuantities on Auralis, Nutcrackers worked just fine. This seems to only apply to modded moons as it works fine on vanilla moons? Rend & Dine didn't seem to have this issue. Unfortunately, due to the way I'm playing I can't verify whether or not it's the scrap or enemy config that causes this issue.

Config not generating

I first realized that I only have the Vanilla and Atlas Abyss Folders, and not the E gypt or Starlancer Moons.
Then I thought I thought I will just delete the Folder and have it generate again.
Now it didn't generate any moons, only a empty Configuration file.
I tried to download older versions like 1.1.1 or 1.1.0 or reinstalling it, but only by downloading 1.1.1 I was able to at least generate a Configuration file with something in it only for it to be whipped again by updating it(the moons never generated again).

Compatibility and Floating Enemies when using v1.0.7

Hello! Sorry to bother you again, but I notice both "compatibility with other mods like ScanForEnemies" and "randomly floating enemies" that were supposedly fixed in v1.0.6 came back in v1.0.7
Mod Pic 010
Mod Pic 011
Both pictures were taken using v1.0.7

Edit: I checked v1.0.6, and it turned out that the reason both previously mentioned things were fixed was because the mod's config files weren't getting saved/loaded. (Just like you said in your Changelog)
So... when you fixed it so that it could save/load the config files again, those things also came back since they weren't actually fixed :(
Btw, there's a mod called "PestControl" which could adjust enemy spawn weights without the need of spawning fake enemies.
Sorry if that doesn't help as I don't really understand the mechanics, but I really like your mod since it provides a lot more options than the others, and it personalizes and enhances me and my friends' experience a lot :)

Again, thank you for your hard work!

A compatibility bug & suggestion

Bug - Modded Moons
I've recently tried this mod and altered the configs for moon prices, but whenever I do navigation seems to stop working. I'm frozen waiting for the ship to move from point A to point B, and if I try to quit it just freezes up. This occurred on both Auralis, from Starlancer Moons mod, and Infernis, from the Infernis mod. Quitting also completely corrupts the file for me, removing all my suits, cuasing TooManySuits, to start spamming errors and the CorporateRestructure mod to break. Even deleting the file and starting a new one won't fix it. This is the screenshot I got of it happening, but not sure what it means beyond what config is causing the issue.
image

Also, there's a feature I'd like to request. The LCLightsStartOffMod mod causes all lights to be turned off, which is nice for some moons, but I can't pick or choose which ones this works on. Could you add something like this, but more configurable, to LethalQualities?

No spawn problem on day 3 and 4

After more testing i'm re-opening an issue for the no spawn problem on day 3 and 4 (and maybe after too, didn't try that far) to confirm it comes from lethal quantities.

Here is what i tested:

  1. Lethal quantities (with freecamer to check):

    • experimation day 1,2,3,4 = No monster spawn on day 3 and 4.
    • march day 1,2,3,4 = No monster spawn on day 3 and 4.
    • experimation day 1, offense day 2, vow day 3, assurance day 4 = No monster spawn on day 3 and 4.
  2. Vanilla (with freecamer to check):

    • experimation day 1,2,3,4 = takes time but monsters spawned even on day 3 and 4 eventually.

The no spawn is until the end (force departure) and is not dependant of the planet.

Here is my lethal quantities config ( it's still the same as the last post).
LethalQuantities.zip

No SpawnAmountRange for OutsideEnemies

It seems that General/SpawnAmountRange parameter is not generated in config files (global/local) for OutsideEnemies.
Will it work if I add it manually for now?

Scrap config page not working

Hate to bother you but upon using the same test profile (018cb35d-700e-f5b2-fe8a-669be8dae195), the moons now load fine, but the game does not seem to read the scrap config files at all. I have change item rarities and min/max scrap amounts for both vanilla and custom moons, but none of the moons seem to reflect those changes at all. Console does not show any errors.

Conflicts with LethalLevelLoader

Hi, sorry for misusing the issue system. I wanted to reach out to you regarding compatibility with LethalLevelLoader but wasn't sure how to contact you. If you use discord i'd love if you hit me up at @IAmBatby or via the Lethal Company Modding server. Thanks!

Error reported when modifying map scrap, ship unable to land

[Error : Unity Log] ArgumentException: An item with the same key has already been added. Key: BottleBin (Item)
Stack trace:
System.Collections.Generic.Dictionary2[TKey,TValue].TryInsert (TKey key, TValue value, System.Collections.Generic.InsertionBehavior behavior) (at <787acc3c9a4c471ba7d971300105af24>:IL_015A) System.Collections.Generic.Dictionary2[TKey,TValue].Add (TKey key, TValue value) (at <787acc3c9a4c471ba7d971300105af24>:IL_0000)
LethalQuantities.Patches.RoundManagerPatch.onLoadNewLevelPrefix (RoundManager __instance, SelectableLevel& newLevel) (at <223bad60ee114d889151ca750c087f5b>:IL_04A1)
(wrapper dynamic-method) RoundManager.DMDRoundManager::LoadNewLevel(RoundManager,int,SelectableLevel)
StartOfRound+d__245.MoveNext () (at :IL_007F)
UnityEngine.SetupCoroutine.InvokeMoveNext (System.Collections.IEnumerator enumerator, System.IntPtr returnValueAddress) (at :IL_0026)

Enemies not spawning when strings in global config file are left default or blank

It appears that the game is reading the "DEFAULT" and "[blank]" strings in the global config files as "0" instead of whatever the base game default is, preventing anything from spawning. Filling each of these strings out manually appears to solve the problem so the mod seems to be working at least, but the way the file generates currently causes nothing to spawn in the interior area.

Have not tested with the global scrap file or outside enemy files.

Suspected error?

I installed a new version of the mod and started a new record. After launching the ship, I quit the game and reopened it. The cutoff amount becomes abnormal I installed Dynamic Comapny+DynamicDeadline+ExtraDaysToDeadline

normal circumstances
20240124190308_1

abnormal
20240124190254_1

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.