#Lethal Level Loader [Custom Content Loading API]
1 messages · Page 26 of 1
is it possible to add new tiles to the vanilla dungeon tile pools with LLL?
not with LLL but I'm currently cooking something up to do that
not sure this is a good alternative but try LethalDays and set it to ~30 in config
Does that mod allow you to set it per moon?
no sadly
is there a way in unity to set the spawn chances of the custom scrap?
im assuming GameObjectChance but Main Path Weight and Branch Path Weight confuse me so thats why i wanted to ask before i try anything
no
does LLL just auto assign it?
or allow it to be changed?
nvm i see that i need to add code for rarity
ooooo, interesting, what are you cookin?
mod that allows injection of custom tiles into the existing tilesets, mainly made as its own mod to put some new custom tiles into the default dungeons but the architecture is there to make it more of an API
oh that sounds awesome, is there a thread I could follow for this?
Lmk more about this when you get the chance cuz it is something i want to support as much as I can
not yet, wanted to get a tile working ingame to show off before fully unveiling it, just trying to make a nice tile that fits the style isn't my expertise
though afaik the actual code of it is already fully complete
could add you to the currently private git to peek at
It’s gonna be fundamentally flawed without @sour spindle’s lighting fix though no?
covers all the equivalent LLL bases such as reference swapping
Ye do that
I was trying to remember what that mod was, is it possible to apply to a nomnom-decompiled project for them to match straight out of the asset bundle?
It’s a runtime thing
Basically all custom content has incorrect lighting and i can fix it but people threw a hissyfit because all current custom content was designed with the brokage in mind
is it something intrinsic to bundling the assets or is it something that could be fixed without strict dependency on the mod at runtime?
It’s runtime
(also added you as collaborator to the git)
if their code is public I prob could just incorporate it into my mod to apply specifically to tiles added by my mod
if you wanna contribute a tile so I can have something to test with it'd be appreciated, only note is that you should replace all the prefabs refs with empty refs (like for LLL)
I don't currently have a tile to test with but if I do get one I'll let you know
I thought the lighting thing was fixed, when I testing out making a combination of all 3 vanilla interiors, the main entrance room lighting was working. Like the fan shadows
I still haven’t had a chance to try interior stuff and don’t remember the issue too much so maybe this doesn’t make sense, but does your thing use the vanilla tiles? I might be misremembering but I thought the project that brought up the shader issue was like a ground-up remake of the vanilla factory that was supposed to be identical. So, like, it wasn’t THE rooms, but identical copies. But maybe they didn’t remake the rooms, instead just the actual generation stuff for the dungeon. I honestly can’t remember.
its speciifcally stuff loaded from assetbundles
Where do I go for custom interiors?
Yeah that.
not anymore, I did intially tho
Having to talk about LLL for a non LC related thing and I just realised currently 374 projects depend on LLL?
Hot damn
But does that include mod packs too?
Only if they are mislabeled. Correctly labeled modpack count is at 3,672
there's a lot of mislabeled modpacks iirc, but whoever you're giving the stats to doesnt need to know that 
this is true australia pls gimmie $30,000
The point it is, it’s a hell of a lot of mods that rely on lll
make it $60k
Is there a way to turn off the lll patching when testing outside of the game? Generation works inside the game
Pretty much the only reason we have such neat modded maps that work in the first place as well as they do
I salute you Batby 🫡
afaik nomnom's unity project patcher comes with the right HDRP settings for the most part
Indeed. I’ve liked making moons but I do not think I’ve got the knowledge, time, patience, etc to figure out the backend stuff for making it actually load, so I’m very glad someone else handles that complicated part.
yes
go the LLL dll
and exclude platform to editor
This works, thanks
anyone got an example mod by chance for a weapon added using LLL, currently trying to figure out how to add 2 melee weapons and a gun
Guns get really complicated because you need to look into animator override controllers, for melee weapons u just have to align stuff and toggle a few options in Item properties like Defensive Weapon, two handed animation, GrabAnim: HoldLung, Hold Trigger
what about setting dmg for the melee weapons?
ty
also i fixed my unity black void issue, a model i added kept a maxed brightness light
nice
do i still set the tag for the prefab as Physics Prop and layer as props?
ye
...i see... 🥲
ah you're doing a shotgun reskin, should be easier than making ur own gun ye
probably not
oh well ¯_(ツ)_/¯
is there a list of the animations i can use for grab?
heya whats the correct way to stop items spawning with LLL? I had it set up like this but apparently even with a rarity of 0 my items are still spawning
was about to sleep when I got alerted of the issue so cant check rn, but thats the only code that touches the LevelMatchingProperties of the items
clearing the level tags should mean they dont spawn on anything right?
well it depends on if theres anything in the other lists
wdym by other lists?
oh right I only use level tags for all of my items, dont touch anything else
yeah 1 person did then another person verified it wasnt working for them either
the rarity works, like lower values are less likely etc, but a set rarity of 0 in the config still has a chance to spawn seemingly
can't think about it too much until you confirm the numbers are right on your end after applying your code
yeah thats fair, mainly threw in out here now in case there was an answer by the morning
I'll get back to ya tomorrow with the results
is there a way of viewing the Level Matching Properties in game with UnityExplorer or similar?
Or should I just log the values
@zenith flax ok tested it and my rarity changing code works, default is set to 20 for rarity for this specific item both in unity editor and in the default config value, it's respecting my config change in game so thats working as expected so really not sure whats up
when I spawn in an item with a rarity set to 0, the log shows nothing as expected too, as theres no leveltags set to the item
and nothing is set in any of the other lists, only using the Level Tags for my item spawning
... wait hang on a couple items are using planet names too, so that might be the issue for a couple of them...?
still doesn't explain my enemy tho as they only use inside properties and only use level tags yet they still spawn apparently even with a rarity of 0
I'm porting a scrap mod I made a while ago from LE to LLL, and I'm wondering if anyone could help point me to where I set spawn odds
in the Level Matching Properties scriptable object
Ah, is it Planet Names?
also worth noting theres a tool called the Creative Content Converter that can port LE mods to LLL with little to no effort
you can choose how you want the rarity to be defined, e.g. by planet name, or level tag or weather etc
I've done that already, I just need to upate spawn odds lol
When you say "Level Tag" is that like interior type or something else
gotcha, then yeah you can do planet names if you wanna do specific moons
level tags are like a tag moons have to help seperate them, like "snowy" for snowy moons etc. If you want a global rarity you can use "Vanilla" for all vanilla moons and "Custom" for all modded moons
Ah, I see, that's cool
So I can set individual spawn odds for the vanilla moons scrap should spawn in Planet Names, then set spawn odds for custom planets in Level Tags
can do aye
Sweet, and Rarity also directly equals spawn weight, right?
cant remember exactly how it equates with LE but yeah
i've found 25~30 to be about vanilla weighting for a standard item if that helps
If I have a 10-weight object and 2 5-weight objects, the first object has a 10/20 chance to spawn
(This mod has 121 scrap in it already, the spawn weights are ruined lol)
lol gotcha, then yeah it functions that way
Sweet, thanks for the help!
no worries, happy to help
anyone know all the animations i can call for grabbing something? ik theres HoldLung or HoldJetpack but what else?
HoldForward i think for hte zeddog scrap
Theres also the HoldMaskToFace iirc but its coded into the haunted item script, and its not called in the item asset like the rest
oh btw found out if you use Imperium by giosuel and use the freecam u can rotate an object w/o dropping it, made it so much eaiser to find the right values
using unity explorer ofc
Has LLL ever fixed decreasing the speed of a moon's time causing the 3rd day of a quota to be removed, or is there another mod that tackles it already?
changing in general or for a specific moon?
In general
no
Will it be addressed?
At some point maybe
Good to hear.
how could i go about adding a sound to scrap that stops playing when picked up, or picking it up and pressing e to stop it from playing, kinda like maxwell
The thing is, it’s a vanilla issue technically. It would be cool if LLL fixed it, but it’s not technically an issue on its end.
It technically is because you get an option from LLL to change the speed of a moon’s time
Time of day is in selectable level isn’t it? Pretty sure that’s vanilla, not LLL. Either way, vanilla’s quota deadline is not actually counted in days, but by hours spent on a moon and then rounded or something. Don’t know why, maybe originally it wasn’t going to be a 3 day deadline and rather x hours allowing you to go to more/less moons depending on how fast you were.
Yes, I know all of that, but you can’t edit that in vanilla, so it’s still associated with LLL. If the feature isn’t going to work properly without it ever getting fixed, then there’s really no point to it
anyone know if lethallevelloader and lethal quantities play nice at all?
im currently adjusting a lot of stats for moon balancing in my modpack and i want to make sure i can actually use lethalquantities for it since it makes it a lot easier to understand and sift through than the cfg file for LLL within thunderstore's UI
I think so
i'm specifically modifying scrap pools and their individual rates, enemy spawn rates, map and dungeon size, and the types of interiors that can spawn since i have a few modded ones
i hope everything works out lol
i just dont want to load in and have the loot be completely broken/never spawn and the dungeon tiles generating incorrectly
is it possible to stop and audio clip from playing if another one plays, i.e. the grab and pocket sounds on a scrap item
might have better results asking in #dev-item…
pretty sure the answeri s no anyways but ye, theres channels for these things
I think i fixed the mod merging stuff today
@zenith flax while you're working on this, any chance u could make a public field in the footstep material system you've got going that has the string or smthn that would simulate the games own tags so I can pick up on specific tags
oh? thats good to hear!
@zenith flax is there a way to get the current loaded extended level?
I want to be able to load a new level from a list and make sure its not the same as the currently loaded one, I've done this via scene name so far and would like to migrate to the numberless identifier from LLL
you can reference LevelManager.CurrentExtendedLevel which is defined here https://github.com/IAmBatby/LethalLevelLoader/blob/7c80b3f488c50794ba5e3737dfdbb8030657e64e/LethalLevelLoader/Patches/LevelManager.cs#L17
perfect, ty
🫡
so, kinda of a dumb question but im not very familiar with LLL. i am trying to use lethal quantities to balance some moons in my modpack that im making and as far as i can tell, the scraps, monster power, facility size, etc is registering correctly. the one issue is that loot frequently spawns on top of itself in some moons. thats probably because i kept the map sizes pretty small (2.2 map size * 1.5 dungeon size max) with some moons that have 30+ scrap minimum. its not that big of a deal, but is there any way to force the loot to disperse through the interior more than it does by default?
probably not the best at balancing either, but i felt like huge map sizes are just never a good idea beyond the size of stuff like titan, march, and artifice
Scrap spawn locations are dictated by the dungeon, you can't really affect that short of modding the interiors themselves
so if i have a lot of scrap i would have to increase the map size to make it work, right?
Yeah; mainly you'd need to have more scrap rooms, though the only knob you can turn without code is the size
ok no big deal then
@rough edge Why was your PR closed?
I deleted forked repo
you can still reimplement it yourself if you want to
Hey I finally decided to look into why route locked nodes cause errors like this one -> #1180739684654121091 message
You can replicate the error by trying to route to a moon that is locked and then typing anything else in the terminal.
The reason for it is having the field acceptAnything set to True
it's trying to load a compatible noun that likely doesnt exist, hence the outside of array error
you can avoid that issue by just setting acceptAnything to false
thats a really indepth report, thank you for ur support darmuh
visual example (real)
gonna probably implement a patchwork fix in openlib or something at some point if you dont have time to get to it by next LLL update
what's openlib?
darmuh's lib
huh, so mostly a terminal related library?
Mostly yea
Needed somewhere to throw my stuff so I could reference it in multiple mods
It’s open to everyone I just ask that you don’t break anything my stuff relies on lol
Broke it
this question has probably been asked a million times, but how come my custom interiors arent loading? They all use LLL, I've tried downgrading the mod, changing stuff in the config (even tho I dont really understand whats going on there), idk man. I just cant get custom interiors/dungeons to load 
Might want to ask in the dev-interior channel: https://discord.com/channels/1168655651455639582/1263331556626268190
Aight
this is staged for whenever i get around to publishing
Might be being stupid, but how do you reference a scriptable object that the game would have already?
For reference, I want to add GeneralItemClass to my item's spawn position types but the spawn code checks for object equality so I can't just assign it in Unity since this'll make another instance of the object, failing the equality check.
I've seen discussion [back in March](#1205741904881516595 message) about this but don't know how to add a "dummy" reference to an object that LLL resolves later.
Could just remap it manually but seems like the sort of thing that would've been handled
FindObjectsByType<Thing>()?
And then just set it to that
well yeah that's what I meant by being able to do it manually
I just thought LLL might have handled it somehow because I read discussion on dummy objects that get remapped somewhere
I guess I'll do that until someone confirms that I'm not just dreaming up what I thought lol
LLL should handle that case, it handles item groups, hazards, vents, and some other stuff I think
Wdym by LLL handling item groups, hazards and vents
I tried it out and it had a different hashcode to vanilla items so it was definitely a different object instance
Meant that it didn't have any tiles to spawn on because of this code fragment in RoundManager.SpawnScrapInLevel:
Log: No tiles containing a scrap spawn with item type: {itemName}
List<RandomScrapSpawn> randomScrapSpawnList =
ScrapToSpawn[i].spawnPositionTypes == null
|| ScrapToSpawn[i].spawnPositionTypes.Count == 0
|| index1 != -1
? objectsOfType
.ToList<RandomScrapSpawn>()
: objectsOfType
.Where<RandomScrapSpawn>(x =>
ScrapToSpawn[i].spawnPositionTypes.Contains(x.spawnableItems)
&& !x.spawnUsed)
.ToList<RandomScrapSpawn>();
Essentially failing the .Contains since it's a different instance
Yeah but doesn't just doing findobjectsbytype give u the exact instance u need
I'm probably slow and u agree
I'm leaving in and out the convo rn cuz im eating lol
You are right in that you could use FindObjectsByType to get the reference of the pre-existing object in code and add it on (which is what I will be doing now), but my point is that I thought LLL would have handled this so I can just refer to the GeneralItemClass scriptable object in Unity's editor, and LLL would recognise this and map it on for me.
There's never a case I can think of where you want another instance of GeneralItemClass floating around so any reference to this class should be replaced by the one that already exists - i.e. LLL would have been calling FindObjectsByType and replacing the reference automatically in my mind (or something equivalent).
are you by chance testing in editor or are you properly loading the game up and checking
compiling and loading it up in game
it should definitely do that, for a custom dungeon?
@zenith flax
Probably, I assume replacing inside of Item SO was just a forgor moment
Maybe, I don't want to rule out me being stupid either but it does look like it was forgotten or there's a way I'm unaware of
oh maybe I got it mixed up, I don't think the replacement is for items
just random scrap spawn
Didn’t i already say i didn’t do this yet or was that someone else
Someone else
I forgot to restore itemgroups in items
Oh cool, so just referring to the itemgroup in Unity will be enough on item creators' ends when you fix it?
Ye
Right name
also idk brought up that whole hashcode thing but like
That’s not relevant in the sense that it’s abit odd to refer to it like that
It’s not because they have different hashcodes, they have different hashcodes because they are different objects
I thought if the hashcode is different they are different instances so the equality wouldn't be true
yeah, maybe I mixed up my words. That's what I meant
this is true
hey batby, if i'm looking to register network prefabs to custom enemies (made by others), what's a safe patch to do?`
just looking for where LLL finishes loading its enemies, and then patch it right there
nevermind, looks like even MenuManager.Start is perfectly fine here
barch what are you doing 
Hopefully updates sooner on all the projects Ive teased. Ngl been jumping abit between all of them learning new things which has been neat
If Gale didn’t exist I probably would have been thinking about making a mod manager after this package manager stuffs
Is there an example .lethalbundle file I could use for some quick testing?
Depending on what you're trying to do, you could probably grab an item/moon/interior mod that uses LLL and just use the lethalbundle(s) that's inside it. Don't republish that bundle as your own of course, but just to test I don't see why there'd be an issue.
You don't have a bundle that you use just to test LLL itself?
can just download a mod like https://thunderstore.io/c/lethal-company/p/Magic_Wesley/Wesleys_Moons/ if you need to test some stuff
lmk whats up
Very intested in hearing how that goes aha'
Worth noting current LLL does have a form of content validation but it's fairly shit and a lot cleaner in a wip build i gotta force myself to finish up
how the hell do I get rid of this
it randomly filtered me to "asteroid" for whatever reason
and I can't undo it
filter none
I've never used the filter option lol
oh hehe thank you
I tried to do like filter moons or just filter and it didn't work teehee
🥺
metewah
perfecto for smooth brains like me
Isn't it Meteawah?
XD you should still remember stuff in your own mod hehe
They both sound funny though
It went pretty well. I was able to create unit tests for loading an asset bundle without having to modify the base plugin very much.
Unit Tests: https://github.com/linkoid/LethalLevelLoader/blob/smiteunit-tests/LethalLevelLoader.Tests/AssetBundleTests.cs
Changes: https://github.com/IAmBatby/LethalLevelLoader/compare/main...linkoid:LethalLevelLoader:smiteunit-tests
I think it would be easier if there was a way to test the rest of the plugin without having to create a different asset bundle for each test though. I don't know enough about to project to know how to do that though.
had 10gb worth of old bundles in my recycleing bin that I forgot to empty lol
@zenith flax do modders have access / control over the numberless name of their moon? I'd like to add configuration for each modded moon but I need something to identify the moons and that would ideally be something the modders are aware of and or can control
what happens if two planets have the same name?
someone gets to switch 🙂
so it wouldn't load both of them? i mean this is probably an edge case
stuff like configs would work unintendedly
wdym
what I am trying to do is add a config file for each entity and moon for balancing and adjustments, and each file would contain a unique entity / moon name that is known and also consistently unique
so numberless name would work for this?
I use specifically extendedLevel.SelectableLevel.PlanetName.StripSpecialCharacters() (stripspecialcharacters is a lll extension)
its the same as numberless except it removes a couple other characters that can possibly break bepinex config binding (eg. [)
alright, thx
my next moon is gonna be named ##[]$
bitch i doubt it
Moon named ]drop tables;
it makes sense lore wise!
@zenith flax I was looking into making scriptable objects and it would be nice if I could just find mine inside of your .lethalbundle files that way people don't have to pack another bundle. I see inside of your AssetBundleLoader script you have a handy event for after your bundles finish loading that I can use but your dictionary containing the asset bundles is marked as internal along with all the related methods so I can't use it without jumping through a few extra hoops. I also can't just load the bundles myself because then the game throws errors about loading bundles twice. Is there any reason for this or could it be changed in a future update? (I know there are ways for me to get around it but it just seems unnecessary)
at some point i need to redo the entire asset bundle system so probably during that
cant promise an eta
you can probably use this? https://docs.unity3d.com/ScriptReference/AssetBundle.GetAllLoadedAssetBundles.html
@zenith flax I wanted to follow up on this. Does it seem like something that you would find useful for testing Lethal Level Loader itself and help automate the detection of mod breaking updates?
Very possibly but I can't commit to anything due to my irl circumstances making my work on this super inconsistent
<PackageReference Include="IAmBatby.LethalLevelLoader" Version="*-*" Publicize="true"/>
is that not enough to make it possible? 🥺
they're trying to get an SO inside a lethal bundle
that SO is not one of batby's
its their own
Yeah but the issue is the bundles being inaccessible. So this would be a valid solution
The way I've chose to do it is scrub through all loaded bundles at a point I know the bundles have finished loading. It's not a super great solution but works.
Huh
Just out of curiosity, what would you gain from having the publicised assembly in terms of the asset bundle?
Is there like a private list of em somewhere in LLL?
I want to check if the bundles contain any instance of my scriptable objects. Without accessing to the bundles to look in them it's a little hard lol
Yeah it's technically internal not private but yes
Ahh okay that makes sense then
you and uneko ever figure out what was causing the ship in motion issue? im having it too : (
is there any way to access the "CreditsWorth" property and edit it in a config?
Crossposting for help from the Cull Factory mod since this may be an error with my map setup, but does anybody know why my interior is unloading in random chunks with Cull Factory? It doesn't do this with any other moon. In multiplayer there's also some weird audio issue where audio on the moon's surface is still playing despite being in the facility
The latter issue tells me I set something up wrong, but every script/setup I compared to like Experimentation or Titan, checks out
I've done it before but the way you go about it is a little jank.
You have to write a plugin that transfers a modded level's properties to a vanilla level and disable the modded level scene being registered in config.
Okaythx
Here's an example
{
public static ExtendedLevel extendedLevelDine;
public static ExtendedLevel extendedLevelDineHybrid;
[HarmonyPatch(typeof(StartOfRound), "Awake")]
[HarmonyPriority(1000)]
private static void Postfix()
{
foreach (ExtendedLevel extendedLevel in PatchedContent.ExtendedLevels)
{
if (extendedLevel.SelectableLevel.PlanetName == "7 Dine")
{
extendedLevelDine = extendedLevel;
}
if (extendedLevel.SelectableLevel.PlanetName == "DineHybridDummy")
{
extendedLevelDineHybrid = extendedLevel;
}
}
if ((Object)(object)extendedLevelDine != (Object)null && (Object)(object)extendedLevelDineHybrid != (Object)null)
{
extendedLevelDine.SceneSelections = extendedLevelDineHybrid.SceneSelections;
extendedLevelDine.SelectableLevel.randomWeathers = extendedLevelDineHybrid.SelectableLevel.randomWeathers;
extendedLevelDine.SelectableLevel.factorySizeMultiplier = extendedLevelDineHybrid.SelectableLevel.factorySizeMultiplier;
extendedLevelDine.SelectableLevel.dungeonFlowTypes = extendedLevelDineHybrid.SelectableLevel.dungeonFlowTypes;
extendedLevelDine.SelectableLevel.spawnableMapObjects = extendedLevelDineHybrid.SelectableLevel.spawnableMapObjects;
extendedLevelDine.SelectableLevel.spawnableOutsideObjects = extendedLevelDineHybrid.SelectableLevel.spawnableOutsideObjects;
extendedLevelDine.SelectableLevel.spawnableScrap = extendedLevelDineHybrid.SelectableLevel.spawnableScrap;
extendedLevelDine.SelectableLevel.minScrap = extendedLevelDineHybrid.SelectableLevel.minScrap;
extendedLevelDine.SelectableLevel.maxScrap = extendedLevelDineHybrid.SelectableLevel.maxScrap;
extendedLevelDine.SelectableLevel.levelAmbienceClips = extendedLevelDineHybrid.SelectableLevel.levelAmbienceClips;
extendedLevelDine.SelectableLevel.maxEnemyPowerCount = extendedLevelDineHybrid.SelectableLevel.maxEnemyPowerCount;
extendedLevelDine.SelectableLevel.maxOutsideEnemyPowerCount = extendedLevelDineHybrid.SelectableLevel.maxOutsideEnemyPowerCount;
extendedLevelDine.SelectableLevel.maxDaytimeEnemyPowerCount = extendedLevelDineHybrid.SelectableLevel.maxDaytimeEnemyPowerCount;
extendedLevelDine.SelectableLevel.Enemies = extendedLevelDineHybrid.SelectableLevel.Enemies;
extendedLevelDine.SelectableLevel.OutsideEnemies = extendedLevelDineHybrid.SelectableLevel.OutsideEnemies;
extendedLevelDine.SelectableLevel.DaytimeEnemies = extendedLevelDineHybrid.SelectableLevel.DaytimeEnemies;
extendedLevelDine.SelectableLevel.enemySpawnChanceThroughoutDay = extendedLevelDineHybrid.SelectableLevel.enemySpawnChanceThroughoutDay;
extendedLevelDine.SelectableLevel.outsideEnemySpawnChanceThroughDay = extendedLevelDineHybrid.SelectableLevel.outsideEnemySpawnChanceThroughDay;
extendedLevelDine.SelectableLevel.daytimeEnemySpawnChanceThroughDay = extendedLevelDineHybrid.SelectableLevel.daytimeEnemySpawnChanceThroughDay;
extendedLevelDine.SelectableLevel.spawnProbabilityRange = extendedLevelDineHybrid.SelectableLevel.spawnProbabilityRange;
extendedLevelDine.SelectableLevel.daytimeEnemiesProbabilityRange = extendedLevelDineHybrid.SelectableLevel.daytimeEnemiesProbabilityRange;
extendedLevelDine.SelectableLevel.levelIncludesSnowFootprints = extendedLevelDineHybrid.SelectableLevel.levelIncludesSnowFootprints;
Plugin.Log("Dine replaced with Dine Hybrid!");
}
}
}```
||there is probably a much better way of doing this but this is how I achieved it with my Dine replacement originally||
Thanks
In case you're wondering, I wasn't able to replace the SelectableLevel directly in the code so that's why I had done it one by one on the properties that mattered.
It threw up an error if I tried to do it all at once.
ive been very sick my bad yall
It’s ok Batby. Take your time. We hope you get well soon!
filed a bug that should be a quick fix: https://github.com/IAmBatby/LethalLevelLoader/issues/145
Tolian's been having issues with a custom apparatus spawn due to this, although I'm assuming it can be worked around by making an ExtendedItem for the custom apparatus
Yeah a couple if people had this, I assume u should probably just be registering it as an item
Is there any updated tutorial on how to make custom scrap? I (probably) succesfully made a unity project with the help of AudioKnight's Custom Moon tutorial, but i don't know how to continue
the dev-item channel is probably a good place to get help with item stuff: https://discord.com/channels/1168655651455639582/1263331483070894112
im back!
finally motivated to continue working on what I was cooking back in March this year
one problem tho
theres been like 3-4 updates since I last worked on my project and the modding pipeline for custom interiors has changed since I was last here
idk if im getting unlucky or its not spawning
probably have to rebuild the bundle with the current version of LLL
You might get better help in the dev-interior channel. I would think that it should be spawning just based off of the fact LLL seems to think it’s a viable dungeon flow with 300 weight (assuming that’s yours). You could try using LLL config and bumping its weight up/bumping facility weight down to make it more likely.
Aha yeah I should try and do that just to lower the odds of facility because rn it’s the only thing that’s spawning which is a bad sign
It should be like a 50~/50~/plus whatever mansion and mineshaft equal
@spiral siren ty for the issue, in this case tho if they did want custom they would want to register that themselves
rn LLL isn't built to autodetect/register custom content that is found in references
you have to explicitly pass it to me
semi by design semi by the edge cases created in stuff existing in scene files that i couldnt check in make it kinda inconsistent at best
wait but it does auto-register SpawnSyncedObject prefabs
it just misses injected tiles

that didn't seem intended to me
yes
that is unintentional and i will fix
It should be possible to work around this by adding any custom items spawned within injected tiles as registered ExtendedItems.
This is what i wouldn't be doing
oh i think i misread work around
kinda
it did work tho I believe
if they did want it custom apparatus then they should do that yes, regardless of this issue
its a weird issue where vanilla doesn't fully support what people want here
cuz what people want is just recolours of the apparatus
I may be wrong, but I think that the apparatus is intended to save to a different ID than the one that's spawned
not entirely sure
yeah rn it would be fucked
after unfucking that issue you pointed out tho theres pros and cons between trying to let LLL replace your fake apparatus with the real one or trying to get a custom item setup for it
hum, interesting
cuz from what ive seen 99% of people just want the vanilla apparatus reference but with perhaps a different model colour
but there isn't a clean way to do that
ideally vanilla's random mesh and material system would be a little restructured to handle that niche but oh well
Do you know where i need to grab those tiles btw
no stress if you don't
oh sorry I was distracted thonkin about something
it's in DungeonFlow.TileInjectionRules[i].TileSet.TileWeights.Weights[j].GameObject.GetComponent<Tile>() I believe
yrup that's where it be
oh is it possible to put water in interior units and have that work with LLL now?
I remember back 8 months ago I was unable to do that
that and quicksand
how can I go about making it so the dungeon/interior is always different when you change a moon? Or maybe so that the percentage chance for the dungeon to that we've already been to to spawn again gets lowered?
oh wow thank you very much
Yes. I believe that was a vanilla limitation but since the new cave interior has water, that got changed. I’m unsure about quicksand.
@zenith flax I've added some custom scrap to my custom moon using LethalLib, but it doesn't seem to be recognized by LLL. A user reported when enabling Content Configuration settings for my moon, custom scrap no longer spawns and I'm not sure how to fix it
I think Wesley had this scrap issue but has since fixed it for an upcoming update. @gaunt hinge, do you have any idea about this scrap issue^?
I just register it through LLL and use LevelMatchingProperties to have em spawn on moons
i believe this is a bug batby said he'll fix on the upcoming update
Oh, maybe that’s what it was
that issue was because Wesley didnt register them properly thru LMPs, now he does BUT players cant config the itemspawnchances
or well theres a possibility but its not workin
If I register an item with LLL and LMPs, do I still have to have it in the Spawnable Scrap section of the Selectable Level or should that be enough? I can't get it to spawn through LLL and I'm not sure what I'm doing wrong
No
You are spawning them in thru LMP
Thats where you give it a rarity
I’d recommend using Planet Names in LMP
Just make sure you add the ExtendedItem to your ExtendedMod
Oh shit u right
I forgot about that
Well quicksand and water are handled by the same script afaik
So if one works
Theoretically the other would as well
hey so I have an item I add to the store using LLL and checking the checkbox for it in it's SO, mostly works fine although it seems it gets removed from the store when loading the same save during the same play session, any ideas?
Ye I had similar issue before when the store item shows up 50% of the time
did you find a fix for it at all?
Nope
The Company ran out of stock. Supply chain issues.
PLEASE enable the highest logging u can, recreate the effect, then send logs
Steps To Recreate:
- Start a game
- Check store, Holding Pen shows up
- Quit to main menu
- Reload same save
- Check store, Holding Pen doesn't show up and cannot be purchased
(Also what mods?)
profile code
019253a9-5886-4366-5660-60ee3f83eaac
my specific mod is ReindogAndFriends, found here: https://thunderstore.io/c/lethal-company/p/reindogfan1372/ReindogAndFriends/
(file version of my mod profile for whenever the code stops working)
Water is a quicksand, is it?
Yes, or, well, pretty much. Same script but a bool determines if it’s quicksand or water if I recall correctly. I’d assume quicksand would work inside, but I would’ve also assumed water inside would’ve been fine in earlier versions but since something must’ve been stopping it, I wasn’t sure if that’d been fully removed or just changed to allow water but block quicksand somehow. I assume both works but didn’t want to say with certainty quicksand does since I haven’t actually seen it done.
i really need to get rid of this beta version of LLL from my dev profile lol
this would be the log of that i think
I also made a fix for the disappearing items from the store but I also saw the exp branch not having that code anymore so I wasn't sure if I should bother making a PR for it.

Because I was given a version to test my mods in?
is there still the glitch where setting the moon time anything but 1.0 will use 2 days instead of 1?
yes
Yes, if you really need to adjust time settings for specific moons you'll need to use CentralConfig
CentralConfig is good if you know what options to not touch
i have everything turned off except moons, and everything in moons is default except time speed
i have everything else handled via the LLL config
actually i never turned off the dungen safeguards, but idk if turning it off would be good or bad. it spammed errors loading black mesa interior when i played earlier
oh does that mean LLL has already fixed that store issue just not released officially yet?
Hey @zenith flax, I was just curious if you've got a minute about the extended story logs. I know at one point there was some issues with them. Is this still a thing or might I be doing something wrong? I see mine in the terminal but can't seem to open it. I know there's another mod for custom story logs so I can just use that if these don't work so it's not a huge deal. I was just hoping I wouldn't need to add another dependency, you know?
would like to know this as well
I have this bug when loading up on modded moons where (I believe) the reverb gets messed up and theres different timings for the audio for left and right ear as you can hear in this clip. It's uncommon but happens on many different moons.
(listen with headphones)
I fixed it. The noun to open it I had like "Test" but you can't key in capital letters in the terminal in-game so it couldn't be opened with "test".
I really don't know why that would be and it's probably not a LLL thing. It's either on the moons' end or a conflict with some other mod (probably that but don't know which one/why). I really don't know though. I don't think I've heard that before.
Is there a way to Dump all items in the game with LLL's tag system? I would like to have list of items that are conductive, Metal, etc...
I want to use this data to make a spreadsheet for feeding into SCP 914 in the SCP interior.
I can do this all manually but having most of the work done for me would be ideal.
Yes, you'd have a mod output that for you in the format you'd like, lol
Very easy to access
That you know of is there a mod that currently exists that does something like this?
of course not
why would there be a mod that exists to send a formatted string of a specific LLL content tag, just ask uhhh
lass to do it
haha
has anyone else encountered issues with LLL in the Unity editor creating one extra content tag each launch that then has to be manually removed to prevent a null deref? I'm not sure if this is an issue with how I've set things up or if this happens to everyone
I'm considering making a script to fix it, and the ideal solution I think would be to reimport the content scriptables, but for some reason doing so doesn't actually reload the file from disk where these stray missing content tags are not present 
when is the null deref happening?
upon loading into a save, it tries to merge duplicate content tags by placing them in a dictionary, but one is null and the dictionary doesn't want null keys, so the entire loading process fails and it gets stuck with the black foggy screen and interact prompt
i feel like there would be a lot of complaining if LLL was currently causing foggy screen on loading save
i would check if your guys' pack or something you guys are doing is doing this instead
it's not an issue on release unless we forget to remove content tags in the editor
perhaps most people aren't registering their ExtendedMod in editor or something?
we have it set up to register the ExtendedMod in plugin awake, so LLL is actually loading things as it would in the normal player
wdym you register the extendedmod in plugin awake, shouldn't LLL be handling all that?
I don't think it knows how to in editor, it certainly doesn't find the ExtendedMod for the moon
figured out that I can modify the AssetModificationBlocker in the LC Project Patcher so that it includes mod files in its ScriptableObject modification blocking
it seems to be preventing LLL from messing with it
for some reason my LLL config has nothing in it
for the moons and interiors
am i doing something very wrong?
found the issue and fixed it
How do you make The Locker https://thunderstore.io/c/lethal-company/p/zealsprince/Locker/ enemy work with LethalLevelLoader? Doesn't work if I add "Locker:100" to "Enemy Settings - Inside Enemies Spawning List" as the only enemy in that list even. Is the "Locker" tag wrong?
trying to set up an interior mod rn but running into an issue where when i go into a lobby the screen goes black and i get these errors, followed by some spam logs, noticed a LLL related issue near the top and wondered if i maybe set up something wrong there..?
I keep getting this error with custom scrap in LLL [Error :LethalLevelLoader] Removed: 3 SpawnableItemWithRarities From CurrentLevel: Titan Due To Invalid Properties To Prevent Errors.
I'm trying to figure out what it's originating from but it doesn't say
Try checking your extendeditems properties (especially the level matching)
I got the same error message when I put the spawn rarities string in the wrong place
anyone else having an issue with moons not showing up on the terminal?
So I have a question and I'm going to try an be as detailed as possible. I'm assigning the Company Mines interior by LCIntoTheDarkness to the mod moon Polarus by Wesley. It works just fine but the dungeon generation is enormous. I've tried tinkering with the dungeon scaling settings to reduce the dungeon size, but no matter what I set, the dungeon remains the same large size. I theorized that maybe the interior has a set size, so I assigned it to experimentation, but to my surprise, it generated a much smaller version for it. So my question is, am I doing something wrong in LLL? Or is this likely an issue with Polarus and/or the interior?
My LLL settings for the mines.
Content Config = True
Dynamic Size Restriction = True
Minimum Size Multiplier = 0.4
Maximum Size Multiplier = 0.6
Restrict Dungeon Size Scaler = 0 (tried 1 as well)
My goal was to reduce the dungeon size to about 40-60% of it's original size with these settings, but I am observing no change. I did search for others that had a similar issue with dungeons not resizing and confirmed that flipping the Dungeon size scaler from 0 to 1 does nothing for my case.
What is the map size for Polarus?
Wait so when making custom scrap with LLL
if you don't assign a rarity or give a rarity of 0, it throws up an error 🤔
2, but this is not represented anywhere in LLL's configs.
@zenith flax What exactly does LLL replace with vanilla in terms of prefabs, materials, etc.? I want to create a variant of the Mineshaft interior and want to know exactly what I can leave as stubs for the sake of filesize optimization
He made a list before, idk if we ever pinned it
But I don't believe he replaces any materials or anything like that
Water was a special case, and that was only its shader
Ty
from your message lmao
Someone bother me if it broke
nothing seems to be broken with it
the only thing that might act weird is the 8% chance for a hoarder bug infestation but i haven't seen it cause any problems
resilient code W
only broken thing I'm seeing is the moon info text on the main monitor still doesn't scroll 😔 (still not 100% certain that was a qol feature LLL added but even if it was I'm just messing with you)
i actually got a hoarding bug infestation on a modded moon/interior yesterday and there were no problems, so LLL is fine
quick question,
is LLL currently able to make modded moons for current version? I'm a little out of the loop for LC modding
If I am understanding the question, yes. The current LLL version works in the current game version for adding modded moons. I think it's currently the main if not only way we add custom moons.
alright cool, thank you, I've been meaning to update an older moon mod I made and I wasn't sure
LLL is the only way for moons nowadays
At the beginning there was Lethal extension with lethal sdk made by holographic wings
But it was quickly abandoned after batby started doing its thing
But LLL was inspired by LethalSDK
Without lethal sdk lll will never come to existence
HDLethalCompany and LLL don't mix well together upon resetting the lobby.
I don't recommend using HD lc since its not updated for a very long time
Do you know of an alternative to it?
Nope
LCUltrawide Community
Are you able to increase the quality of fog, textures, etc with it?
That I dont think so, maybe ask about it in its thread #1277558798726205441
Hello, i can't find any info so i'll ask here : What is sort by 'tag' ? What is a 'tag' and how does it work ?
The first thing in pins of this thread.
Alright, but it shows for items tags and i don't understand how it relate to the terminal moon Sorting ?
Switch the page from items to SelectableLevel
Oh, i didn't see that, thanks
Anyone familiar with making interiors/dungeons for LLL, if you add the electric box to your interior are you adding your powered lights to either of these lists in RoundManager? Is there a separate collection that LLL maintains for your powered lights or is this done independently by each interior?
I'm guessing if you were following vanilla logic you'd be tagging your dungeon's powered lights with the "PoweredLight" tag?
I will say I haven’t touched interiors or code yet but I do have lights on a moon that shut off with apparatus pull and I think that’s done purely through using that tag somehow
Basically what I've done is I've just copied vanilla lights and adjusted them accordingly and that has worked fine
I believe @gaunt hinge does the same
yea
Sounds about right
is there a way to find dynamic level tags in my modpack? I think some moon mods I have added, added custom tags but I don't know what they are since they didn't list them on their readme's
There a file or something idk
hmmm, alright i think I need to do some unity exploring then. The RoundManager FlickerLights method doesnt seem to work for me with most (if not all) custom interiors
from the video i've seen, the animators are making the correct noise but the lights themselves do not turn off or on https://discordapp.com/channels/1168655651455639582/1188262321970229358/1302228684446629948
you could give it a try on Black Mesa, we did a pass to make sure that all the lights we wanted to be controlled by the breaker have correct animations
if it works there, then it's an interior mod issue and you gotta report it to every dev lol
I don't think there's any reason your light flicker call shouldn't work on modded interiors if they're set up right, but maybe there's some check that I forget about
sounds good, i'll give black mesa a look at some point when I find the time. I dont want to rule out it being a me-issue but I am literally just calling a vanilla function so trying to figure it out lol
so something i've noticed with black mesa in particular
not sure if that's more than the average amount of powered lights for an interior but it does seem like a lot, and there's a handful of null lights in the list (this is the lights list not the animators list)
Keep in mind this won’t find any animator on the tagged light itself, only it’s children
good point yeah
going back to this, most of the lights do appear to be flickering properly (hard to tell with this fog that zeekers added 🙃)
i'm pretty sure the fog was removed today
no GetComponentInChildren includes the start component
Gets a reference to a component of type T on the same GameObject as the component specified, or any child of the GameObject.
Yeah it do have a lot of lights for sure
Not sure what's up with the nulls, probably @main ravine has some scuffed copied prefab somewhere lol
although some may actually be intentional, I forget
its the only interior i've checked with unityexplorer so far so i'll need to see if it happens anywhere else
we did have some animations tied to the lights in the past, not sure if any stuck around after we switched to an apparatus event
I haven't looked at Black Mesa in a good bit since I've been busy with OpenBodyCams stuff, but I am close to being done with that I think
yeah no worries, i'm just trying to rap my head around my goals for the ghost codes lighting event
Hey, I've got a problem with LLL.
I need to put it on for modded moons and maps.
But as soon as I put it on, all the vanilla moons disappear from the terminal.
On the other hand you can grab I know with titan for example it says it costs 700, but I haven't tried to go there.
But not necessarily knowing the game by heart if there is a way to restore the display of the moons in the terminal I want to know.
Thank you
huh, that's pretty nice
ya and the similar array getter works the same
chances are any lights that weren't flickering just haven't been converted to prefabs, but it should only be a small few
Lowkey hate that
it seemed to be the overhead ones weren't but i'm not 100% sure. Turns out I need to update lethal to get rid of the fog lmao
that's an interesting take, I've never had a situation where I didn't want it to do that lol
i mean its very misleading, i've also never had a situation where i didnt want that, but super misleading
I don’t like that it’s not implied in the function name
especially when doing a getcomponent + inchildren is very simple
Unity devs seem to be allergic to that
GetComponentsWithChildren idk
but then you have to allocate twice or concat
and concat would be ugly too lol
cleanest thing would be with a collection expression and even [thing.GetComponent<OtherThing>()].Concat(thing.GetComponentsInChildren<OtherThing>()) is very stinky imo
yeah maybe that could work I suppose
or GetComponentsRecursive perhaps
but experience has taught me not to trust the names of Unity methods anyway, I always check the docs or test things in UnityExplorer if they're not totally clear lol
fair
reminds me of Physics.SphereCast not really being a sphere but more of a capsule and not being able to figure out how to use Physics.CapsuleCast, though both could be a skill issue on my end
do you mean SphereCast is a capsule with the capsule oriented so the height is in the direction of the ray? 
or..how is it a capsule?
well, think about a sphere collider in unity, you cant scale it in a direction, but with a capsule you can, when doing a SphereCast i was able to scale it in a direction, so that really confused me lol
and then i tried doing a CapsuleCast and just couldnt get it to actually do anything so i just went back to a raycast
sounds like you were looking for OverlapSphere maybe
SphereCast is like sending a sphere collider forward a certain distance and recording what it hits
weird, when i was testing it with the laser hazard it actually completely how i'd expect a capsule collider to act
actually i still am using it lol
I mean, it would return all the same colliders that a capsule collider would hit if its upward direction was instead in the direction of the ray you're casting
because a sphere cast in some sense "stretches" that sphere forward
but I believe it does so in a way such that the things that sphere would hit first as it is being "moved" forward appears first in the list of colliders
huh
(though that is not totally guaranteed afaik)
thats interesting, i guess if it worked how i imagined then it'd just be OverlapSphere duplicated
capsule cast would allow you to stretch it upward and in the direction of the ray
duplicated along the ray you mean?
as far as I understand it, that's what it is, although probably more mathematically correct than stepping a sphere would be hopefully
i imagined it exactly how an OverlapSphere is, just one big Sphere at the center lol, i didnt think that it duplicated the sphere towards the direction of the ray
which also brings me to something i couldnt figure out
wait, then what did you think the distance of the spherecast was for?
or.. I guess it's an optional parameter, so maybe you didn't notice it
dunno what i thought lol, it just worked and i didnt give it too much thought though i felt it was really weird
i initially replaced my raycast with a sphere cast cuz i wanted to get my ray "volume" so that the laser isnt actually just one almost infinitely thin ray and more so an actual laser with substance
but for some reason, the player crouching just didnt seem to move the colliders of the player down and they were still being hit
compared to grandarmory lol
wesley hates people using their eyes
huh, that's odd, it definitely does lower the box collider
maybe your sphere cast was too thicc?
Nom nom.
lol yep, I gotta yell at Plastered to remove some lights probably
perhaps anyway
it does because traps like the seamine from surfaced u can crouch under, but i just couldnt manage to replicate the player dodging the ray by crouching no matter how much i tried moving the laser above tthe player so that it would BARELY touch the player's colliders just incase it was a small difference lol
either that or I fiddle with the settings so that they cull
in the end i did this 💀
(which only affects perf in editor because we don't always run CullFactory there)
If your dealing with optimising allocating you probably wouldn’t be using a workflow like that anyway
At least in my head it’s weird because in those situations there’s usually a setup where there’s a dedicated collection parent with all the relevant objects inside it, so having said collection parent also be involved feels off
i'll check a vanilla interior here shortly as a good third comparison lol
I'm just averse to adding extra allocations when it's avoidable lol
You're right though, it's not really all that important in most situations where you call that method
more complexity + extra allocations though
Forsure but I guess my argument is that the weirdness should be avoided, not simplified
It feels weird because it is weird
Was the item terminal nodes disappearing after lobby reload ever looked at or not?
It has been a while since I last saw people complaining about it.
Nodes or items themselves, one of the two, I don't remember.
toystore & facility interior powered light counts
interesting that the vanilla interior is the one with the least powered lights lol
it definitely isn't intuitive with the method named as it is, but I at least agree with the implementation being the most common use case
would be nice if you didn't have to check the docs for sure lol
looking at FindObjectsOfType vs FindObjectsByType
🤪
yeah, it's definitely got some pretty minimal lighting, probably a large part of why it performs plenty well without CullFactory
lighting in Black Mesa is pretty extreme in the other direction, it even has two lights for some fixtures, I'd like to remove some or all of those extras at some point if possible
yeah seeing that amount of lights was pretty surprising but I've never made an interior so I didnt question it too much lol
it's a large part of the reason why it pretty much requires CullFactory, although that could be helped by reducing the light fading range
yeah that makes sense
I think going forward I'm going to avoid using RoundManager's FlickerLights method and try to write something myself. I have a feeling calling the vanilla method so frequently might be breaking the animator or something
also calling the vanilla method as I am now means calling this line of code (even though I have flashlights affected set to false) a bunch which can't be good on performance nvm, there is a yield break before this so we're good thereFlashlightItem[] array2 = UnityEngine.Object.FindObjectsOfType<FlashlightItem>();
whats the difference?
i just knew one could let me choose parameters
My gut tells me that one is ordered and one is not
From me memory, besides the parameters
Never got a report of it happening without lethallib related shenanigans before i stopped working
FindObjectsOfType = bad, slow
FindObjectsByType = select whether you want slow or fast
the names definitely indicate that to you for sure
ohhh ic
ah so I should be using ByType with sorting set to none you're saying?
if you dont care about order i assume so
unless you know you need sorting, always use FindObjectsByType(FindObjectsSortMode.None)
I mean if I want to order I usually do so after I have my collection
yeah
time to use FindObjectsByType in Update, thanks for the tip zaggy!
instanceID sorting is not terribly useful
oh god
Well, I only found this one. #1193461151636398080 message
And then some scattered around this discord blaming Terminal Formatter for hiding items.
oh yeah i've had people blame my terminal mod a few times too
if you havent blamed a terminal person in your modding career have u really modded this game?
Well, I am always blamed whenever LGU gets something new made because there were already other patches on it so lol.
Wouldn't be surprised if we missed a few, but last I checked there shouldn't be any more that were null

500 lights there shouldnt be any more that were null
would be easier to make an editor script that pointed you to missing's than looking through all those lights, lol
here give me a sec i'll give you an accurate count of everything that is null
But for example finding scrap spawns is currently done ordered and if it was done unordered you would actually get different practical results because the order is inherently determined by how dungen spawns the Tiles
oh don't worry about that, I can find the culprits pretty easily
I suppose that may be true, depends on if the unordered is deterministic
I would tend to think it is, unless they for some reason decided to integrate a randomness source into some internal hashing somewhere
would be curious to find out, actually
interestingly when I went to check again there wasnt a bunch of null items in the list 😵💫 nvm wrong list
here's the counts I had
[Debug :ghostCodes] allLightsFixed Count: 433```
so 27 null lights?
looks like that list isn't even used actually
Yeah I think I’m the only one that uses it right now
what do you use it for?
Changing the light color during the light flickering event
Although I realized recently I need to cache the original color if I’m gonna keep doing that
you'd be better off constructing your own list in a hook on the method that populates the vanilla lists, and use AddRange(animator.GetComponentInChildren<Light>()) so you actually get every light (and have no nulls)
I also found using my own coroutine to set the animator to “flicker” is working a lot better than using the one in roundmanager
if a light animator has multiple light children (as the ones in Black Mesa do), then it won't work
Yeah that might be a better idea than using two sep lists
well, it should be your own separate list, but the lights list in vanilla doesn't catch all the lights like I mentioned
I basically rewrote the FlickerLights function from RoundManager just without the flashlight stuff. Are you saying that one won’t work?
Yeah that’s fair, I just wanted to keep parity with vanilla as far as what lights actually go out
It’s also easier to use an existing list than figure out which lights are all in the interior lol
the lights are controlled by the animators, and the animators can selectively control any lights that are their children, so the only way to get it to perfect parity is to reach inside the animation clips and find out what they control
not sure if that's possible
next best thing is to get all children of a light animator, rather than just one
doesn't the light flickering functionality just use an animator trigger?
I didn't think it involved changing light colors
and... looks like you can tell the flickering method to not mess with flashlights?
Yeah that’s the only difference but it’s done in a separate method currently using the lights (not animators) list
the flicker animation turns the lights off and on multiple times though
it's not the same thing to do it manually with the lights
I appreciate this context because I wasn’t really sure what the animator did other than play the sound
Yeah I’ve figured that out now. What I mean is the lights flickering and the lights changing color are two separate methods
The lights only change color once when the event starts and once when it ends
And it’s an optional thing in the config since the color change doesn’t always look great
hm, I see
yeah, sounds like something you would want to transition, but that could be quite slow
especially on black mesa 😅
yeah i'm kinda contemplating removing the config option & changing color stuff
and if I do keep it I would rather build it into the new coroutine that calls the animator
anyway, I appreciate all the help from everyone with the custom interior questions 🙂
yw
I'm curious, how does everyone get their moons or interiors to load in the editor? as I understand it, a lot of people have their own hacks, but LLL doesn't actually load any of that automatically
I've created a patch that makes LLL load any ExtendedMod or ExtendedContent in the assets automatically, so if for example you're using a dummy lethalbundle or something to get your moon or interior to show up, that shouldn't be necessary
Unsure if Batby is interested in merging that since I think it was suggested before that it do something like that, but if it is within scope I'm down to make a PR for it
Moons load fine, or at least they used to but I think I broke the player controller script in my project somehow. That’s not an LLL thing though. I do think I’ve seen people say interiors require a bit of a process though.
do you have to set things up to make the moons load, like adding them to the list of selectable levels in StartOfRound/RoundManager (I forget which it is)?
the Black Mesa moon doesn't show up automatically in our project at least
fun, apparently Unity doesn't even support loading a scene that's in an asset bundle in the editor's play mode
or not with the usual methods that is
It’s been a really long time since I’ve done it, but I think the lethalbundles were just stored in a folder I created within LethalLevelLoader in the project
right, that was what Plastered was doing with Black Mesa before we put it on git
the asset bundles were too big for that
not sure if that was the only reason, but it's certainly not ideal for that to be necessary
not sure how loading an asset bundle with asset paths duplicated against editor assets works
if it works for others then I suppose that's fine, but I'm gonna see if I can get loading these scenes in editor to work with a lil patch
Do dynamic level tags get added to each other? An example is Forest:5. If I also have Valley:5 on the same intieror, will it's weight be 10?
I think it just uses the highest one
^
In this case they're the same so 5
Dang, I hoped they would've added together
Would be cool to have more options, but that's probably a whole thing.
Some overriding stuff for example because I have an interior idea that I think would fit most "valley" moons but not really Vow. Not a big deal and not a great example but 🤷♂️
the idea for that was rejected by batby
there was a PR made for that feature but was never implemented
Yeah, I figured. It sounds cool but I can imagine being difficult to get working well (haven't seen the PR).
its mostly just a thing that wasnt wanted afaik
I agreed that it was a valid problem, you pitched a potential solution and I said I wasn't a big fan of it and you made a full PR for it anyway
So yes I rejected it 😭
you who?
hey i told hamunii that it was useless to make a PR but she just wanted double confirmation that it was absolutely something unwanted 
I was going to do it anyways, which it will be in ContentLib, though back then I was planning on just making it work whether or not it was accepted to LLL by forking or whatever
There's a mod for it, one of the dependencies of seichi
Okay thanks
brother what on earth does this have to to with me
Thanks everyone for 7 millie 🙏
Thank YOU
@zenith flax is there any eta for lll new update?
Im looking forward to experiment with custom footsteps
But as far as i know, this feature isn't working yet
Nope, sorry
I'm assuming there's still no fix for LLL causing the 2nd day to be skipped when decreasing a moon's time, right?
not yet
central config has the ability to slow down time while not skipping the 2nd day
i'd use that with only the time settings enabled and everything else off
there are some people looking into fixing it themselves though, so hopefully it gets figured out sooner rather than later
W
Thx for letting me know, I'll use that
Wait a minute
Isn't
CentralConfig's timing inaccurate
what do you mean
Lass believed the time of a moon was something else other than 13 min iirc
she might've fixed that but she defaulted everyday's timer to about 16 minutes cuz she thought a day was 16 minutes
didn't know about that
Oh my god wtf
How am I supposed to do the math here
Why isn't it just 1 by default like LLL...
🙃
Hello, I would like some help, is it possible to set the Level Loader configuration for the moon to have any random interior even if it is a mod? something like "any"
I also wanted to do the same with the mobs, not specifically select which ones can appear and their weight, just that it's all random and anyone can appear.
Scrap too =p
Unfortunatly, interiors control what moons they spawn on, not the other way arround. You could add "Vanilla" and "Custom" to the interior configs in the section for level tags and that will make that interior spawn on all moons. Unless the mobs/scrap have their own config I think you'd have to add them into the pools for each moon individually.
like that?
or is in Tags List?
Dynamic Level Tags List would be it. Manual Level Names List would be like "Vow" or "Rend" or any other moon name.
I want this as a feature so so bad 
Black Meaa I've always wanted to be 1.5-2x day length
To give time for exploring and whatnot
yes i would also love to have this
It's a vanilla thing so either Batby or some other dev would have to change how that function works. It's kind of beyond me though. I did try to look at the script and it looked more complicated than I would've thought, but I only skimmed briefly.
A skilled dev though could probably write a mod that patches that function and then we could use it as a dependency.
i mean, it's already been done (central config). it's just that the mod also includes other things that people probably don't want
so it's not very easy to just slap it on as a dependency
Ah. I see.
i pretty much only use CC for the time settings, and the additional settings thing is true. It automatically disables other mods functions and applies some features which make the game run worse, so i'd like to be rid of it as soon as possible
it would be very nice if the time fix was uploaded as a separate mod
it would, but that probably won't happen untl someone else figures it out
Nom.
@wet vortex @crisp galleon @main ravine @umbral oracle he didnt post it here but whitespike dropped this earlier https://thunderstore.io/c/lethal-company/p/WhiteSpike/Moon_Day_Speed_Multiplier_Patcher/
Thanks! I saw it in the mod showcase channel
Might have to make it a dependency. I’d originally wanted one of my moons to be slightly longer.
are you able to set the day speed manually in your moon's assetbundle? cus if you can then this as a dependency just opened so many opportunities
Yeah, every moon (vanilla and custom) has a field for the day speed multiplier. They all just have it set to 1 since messing with it causes issues. I've tested adding this to my testing profile and using LLL to configure the multiplier now works fine, so theoretically I can change the value in my Unity project, build the bundles again, and push an update and it'll just work as long as this is a dependency.
that sounds right
forgot to ping you earlier
That just might be the most beautiful mod I've ever seen in my life. Thank you.
😅
@unique geode we should definitely add this 🕷️
Ummm
It's already been in the pack for a bit now
XD
Cus mrov made it a dependency for WR when he released it
Ah
Do I need to include the underscore in the scrap's name, or can I just register it like... AC UNIT:100 for example in the scrap roster of a moon
This would be a question for the mod dev of the item, not for here
Since it depends on how their item interacts with LLL and if it can be specified in it
And if so, what the internal name is
That
Iirc it's that
Imperium doesn't show underscores at least, I think
LLL will remove and/or ignore certain special characters which may or may not be relevant
@zenith flax Hey man, it looks like the lethal level loader is conflicting with LethalThings https://thunderstore.io/c/lethal-company/p/Evaisa/LethalThings/
Its a really small problem, all it does is prevent the purchasing of rocket launchers from the mod
Is there anything I can do about this?
Is it trying to filter things by the “rocky” tag? TerminalConflictFix (I think is the name) does a better job handling terminal input.
I haven't used terminalconflictfix but I'll try it
but what it actually does is
when you type in the name of the rocket launcher in the store
example: "RocketLauncher"
No message appears and no prompt is given to purchase
I'll try the terminalconflictfix
how can i prevent interior desyncs when using the config from LLL :(
i keep getting desyncs on march
In theory should be from a different mod
I haven't had a solid report of desync in a long time
could it be generic interiors? or lethal quantities? given i have all interior settings turned off on LQ
dumb question but do the people you play with have the exact same cfg file as you
that's the only reason i can think of that causes interior desyncs
i was using LQ to change march's interior size multiplier to 1.7
but using LLL to actually assign the interiors
because LQ isnt letting me assign interiors for some reason
thats a whole different can of worms though
#1213985212686532638 message
I liked Lethal Quantities but never used it in depth. But I’ve heard people say it’s been breaking with recent game updates.
has minor but annoying issues
the interior settings are 100% intact tho
can someone remind me how to check in the logs where i broke the LLL config? got logoutput.log open
mustve done something wrong, since it reset. thankfully had a backup, but itll just keep doing that til i fix it ofc
Hi, I'm trying to adjust the ordering and grouping of moons in my modpack with LLL, I have it sorted based on price, why are attenuation and volition not grouped? They are set as free moons. Is there a way to custom order and group things?
There is no way to manually adjust them via LLL no. That result is strange however, Any chance you are using any filters?
Any hidden moons? Not sure how LLL handles that internally but I wonder if hidden moons throw that off.
Wouldn't completely suprise me
only sorting by price, there is 1 hidden modded moon that costs 225
@zenith flax does LLL's api let you check for interiors on a name basis? I don't know how it registers interiors, or if I even need LLL's api to check for the current interior name, but I wanna do something like this for modded interiors:
if (currentDungeonType == 4)
{
num += 6;
}
i forget how familar are you with c#
not very, im primarily a java user but i can understand stuff pretty easily i think
i just dont know how lethallevelloader indexes interiors
you can't do anything like this by index
it's not a constant
I have stuff for this though
@tall kindle do you have anything source code-wise for the on extendedmod loaded event type shit
i apologize btw, im still learning yeah
i think for immersive scrap i access my items in there
nothing to apologize for just want to give you the right answer
do you know how events work yet
tyvm
i dont think ive had to use them yet
for anything
This sounds dumb but you know how when you want 1 function to run another function, You usually just call that function right
This is super explicit in the sense that you are very specifically calling that function
events on the other hand are more generalised. With events you can instead create an event and "invoke" it. This means other functions can "listen" to that event and when it invokes anything listening to it will run
FunctionA just yells out to the crowd that it's happening for anyone who cares to listen
is this better practice?
Overall yeah in many ways, But you'll need it for what I'll show you
for a comparable reference your harmony prefix patches and postfix patches more or less work like events. a postfix function would be listening to when the base function is being called
where-as the base function doesn't know nor needs to know that anyone is listening
Why this matters
To do what you want LLL has two event based steps to get what you want
LLL provides a "callback" (basicially same term as an event) whenever it loads an ExtendedMod or LethalBundle. Even better it lets you provide an author name or mod name to filter said results
private void Awake() {
AssetBundleLoader.AddOnExtendedModLoadedListener(OnExtendedModRegistered, "XuXiaolan", "ImmersiveScraps");
}
internal static void OnExtendedModRegistered(ExtendedMod extendedMod) {
if (extendedMod == null) return;
(From Xu's code)
What this is doing is just being like "Hey LLL if you ever load a mod with the author name of XuXiolan or the mod name of ImmersiveScraps can you please let me know about it"
So now you can grab whatever mod you want
from this you can grab whatever stuff in the mod you want too, which in your case is a dungeon
ExtendedDungeonFlow contains this cool thing
[System.Serializable]
public class DungeonEvents
{
public ExtendedEvent<RoundManager> onBeforeDungeonGenerate = new ExtendedEvent<RoundManager>();
public ExtendedEvent onShipLand = new ExtendedEvent();
public ExtendedEvent onShipLeave = new ExtendedEvent();
public ExtendedEvent<List<GameObject>> onSpawnedSyncedObjects = new ExtendedEvent<List<GameObject>>();
public ExtendedEvent<List<GameObject>> onSpawnedMapObjects = new ExtendedEvent<List<GameObject>>();
public ExtendedEvent<List<GrabbableObject>> onSpawnedScrapObjects = new ExtendedEvent<List<GrabbableObject>>();
public ExtendedEvent<(EnemyVent, EnemyAI)> onEnemySpawnedFromVent = new ExtendedEvent<(EnemyVent, EnemyAI)>();
public ExtendedEvent<(EntranceTeleport, PlayerControllerB)> onPlayerEnterDungeon = new ExtendedEvent<(EntranceTeleport, PlayerControllerB)>();
public ExtendedEvent<(EntranceTeleport, PlayerControllerB)> onPlayerExitDungeon = new ExtendedEvent<(EntranceTeleport, PlayerControllerB)>();
public ExtendedEvent<bool> onPowerSwitchToggle = new ExtendedEvent<bool>();
public ExtendedEvent<LungProp> onApparatusTaken = new ExtendedEvent<LungProp>();
}
A bunch of misc gameplay events
with this you can listen to when a specific dungeon does a specific thing
big text dump so let me know if any of this doesnt make sense or is the wrong vibe
LethalLevelLoader.LevelManager.CurrentExtendedLevel and LethalLevelLoader.DungeonManager.CurrentExtendedDungeonFlow are also global ways of accessing the current ones
But yeah in general you can't ever do stuff based on index id's or anything because mod updates or modpack updates will change that
handling modded items in saves is a nightmare
also in LLL vanilla content is a mod too if you ever need to access that
about this
is it possible for me to replace the vanilla moon scenes
with LLL
is there a tag moon developers widely use for moons of theirs with a lot of green? like, "Lush" or "Jungle" or smth
might help to reference these?
so Valley
oh perhaps!!
yeah so the tag for march vow and ada
I have those cuz I used this https://docs.google.com/spreadsheets/d/1WO77KGJplIEC64qmBClOgfEEoFxrhMurCEqe9FKod8I/edit?gid=49662210#gid=49662210 to look up the tags used on vanilla moons
I was looking thru them for these
Can confirm, use Valley for my green moons or Marsh
when did toolbox hit a million downloads lmao
Nice!
Alright!!
Might not end up using valley for the super green ones though, their green is way more saturated than the grass on valley moons
red and yellow ones will go on valley since the vanilla tree's leaves and a few of the vegetation props are of similar colors
This looks like LLL is not handling GameObject.GetName returning null(?) and throwing later when trying to use it
Or maybe one of the objects in the list is null? I'm not sure
[Error :LethalLevelLoader] Removed: 8 SpawnableItemWithRarities From CurrentLevel: Adamance Due To Invalid Properties To Prevent Errors.
What does he keep deleting?
Scrap Settings - Scrap Spawning List
This is how I understand the setting for the appearance of only this scrap on a certain moon?
Sometimes when I load some moons I get softlocked with the ship doors stuck closed with this error
i found out how to make the vanilla moons reroute to custom ones on landing
sadly i cant figure out how to make it switch back to the vanilla one in orbit
but its progress
nevermind i just wasnt updating the monitor after round end lol
I actually really like that! Maybe I'm weird but I liked that Dine had a fire exit that you needed tools to get to from outside. Gave the tools a use and I guess it prevented our group from splitting up right away to go to different doors, plus it was then great if you were lost deep inside and found the fire exit. Also, in this case the 2 fire exits is cool since only March has multiple. I also don't like the current setup of main being on the little hill bunker thing and the fire exit on the main structure. That just doesn't feel right to me.
already been done https://thunderstore.io/c/lethal-company/p/Terraformer9x/TonightWeDine/
Now he looks more interesting)
And on vanilla, the main entrance looks like it should be a firefighter
Kind of but it doesn't seem to have a layout with 2 fire exits. Looks like the hybrid option is V49's entrances with V50's terrain. There's no use of the new terrain and entrances + old fire exit.
i just mean the concept of replacing a vanilla scene at runtime
Ah, yeah.
ohhh shit
yeah i did this way differently
i replaced the entire scene
it looks like he just changes the objects in the scene to use the new assets
i like
um
lol
um ignore that obvious line misplacement in the middle lol
i pasted it on the wrong line
When will the issue /w custom scrap be fixed
I have bad memory so Idk if you have something going on irl but yeah
What issue with custom scrap
When you enable content configuration on a custom moon, all its custom scrap disappears
E.g. Polarus
insert always has been meme
(Technically it could've been an LLL issue at some point but now it's on Wesley if you're encountering it with his stuff)
I mean, Wesley's custom scrap have been broken since they first ever existed, and if you're encountering it on his moons then yeah blame s1ckboy
Nuh uh
Blame me
It'll be fixed when I update
I knew it was generics fault
of course it's monty's fault
[Error :LethalLevelLoader] Removed: 220 SpawnableItemWithRarities From CurrentLevel: EGypt Due To Invalid Properties To Prevent Errors.
Is this what you mean?
@maiden valley can’t rn but I’ll show you how to do proper when I can
this is what i have atm
i have no idea if this is good practice at all but when i was testing with friends we had no errors and everything was syncing properly
internal static ExtendedLevel referenceToMyNewDine;
[HarmonyPatch(typeof(StartOfRound), nameof(StartOfRound.Start))]
[HarmonyPostfix]
private static void StartOfRoundAwake_PostFix()
{
foreach (ExtendedLevel extendedLevel in LethalLevelLoader.PatchedContent.ExtendedLevels)
{
if (extendedLevel.SelectableLevel.sceneName == "Level6Dine")
{
extendedLevel.RouteNode.displayPlanetInfo = referenceToMyNewDine.RouteNode.displayPlanetInfo;
extendedLevel.RouteConfirmNode.buyRerouteToMoon = referenceToMyNewDine.RouteConfirmNode.buyRerouteToMoon;
extendedLevel.SceneSelections.Clear();
extendedLevel.SceneSelections.Add(new StringWithRarity("MyCustomDineSceneName", 100));
return;
}
}
}
see if this works
ah
Unless you wanted your selectablelevel to be used instead too?
its a rebalancing mod and it also changes curves and spawns and stuff
so i was just replacing the entire selectable level
making me open unity
sorry 😭
@maiden valley edited code above
instead of copy pasting values between them you can instead just redirect the terminal
bah, its no good
just continues to load the vanilla scene
i had to do "Start" instead of nameof(...) because its private and it wasnt letting me access it
but i would much prefer to do something like this because while i did get the weather to sync i think it broke with stuff like WeatherRegistry which is a nono
did it? 😳
i need someone to make a fork with working custom footsteps because yes
@zenith flax any ideas?
also yes, but its bc i was changing currentWeather of the selectedlevel and i think it was conflicting with weathertweaks
it was causing Weather: to show twice in the planet summary after landing
ill try to get a screenshot
okay well i couldnt get a screenshot of weather showing twice on the text but its still showing the incorrect weather with weathertweaks installed
ive noticed that with weathertweaks installed it only shows the incorrect weather sometimes
otherwise its always correct
it looks like it applies my weather when landing and then immediately after it applies weathertweaks causing the conflict
if you want to change weather in Registry use WeatherRegistry.WeatherController
I tried doing this but it literally just did nothing, unless I did this wrong
you're changing the weather while in orbit or after starting the ship?
after starting the ship
oh
i tried this i meant *
retyped that wrong
this is called after StartGame
should i be doing it in orbit instead
I'm pretty sure I've made my system with assumption that those changes are done in orbit, but I'd have to double-check if your scenario would work
ah
should i just do a postfix for setplanetweather in startofround
or whatever its called
you could call that then
sadly I'm not home right now, but I'll be happy to check your code and help you later 😅
i got it working 😭 sorry for the trouble batby, you were an amazing help thank you so much for this
you're awesome batby tysm
i've checked how Registry handles it - you'd need to change the weather before Registry toggles the effects
well it doesnt matter now, i dont have to change the weather at all with batby's solution :P i still appreciate the help though hehe, but there should be no errors with ur mod now from my testing
this is when i'm using WeatherController after landing
Alrighty, that's great 😅
if you get any issues with Registry, hit me up 😇
you're too kind!!
why is LLL forcing my level's hazard level to be A-?
i have tried setting it to A+ and S but it just sets it to A- ingame on the hud
does it use some kind of algorithm for calculating hazard levels?
yeah, in the extendedlevel somewhere you can manually turn that off
ohhh
OH and there is a level tags list

