#General Improvements
1 messages ยท Page 9 of 1
if ur running GI 1.2.5 run stable WeatherTweaks and not BetaWeatherTweaks
Running Beta with GI 1.2.5 won't load any mods and be basically vanilla
Looks like there might be a circular dependency problem with BetaWeatherTweaks.. checking
Nah 1.2.5 is fine
Not with beta weather tweaks
Just don't use BetaWeatherTweaks til Mrov makes a patch
use Stable
That's fine there's not really much benefit to the Beta version anyways
But I like betaweathertweaks :<
you don't need to even regen the config
it'll save your settings for when compat is fixed
Ok the problem is WeatherTweaks and BetaWeatherTweaks are using the same plugin GUID.
GI has a soft dependency on that GUID so I can check whether it exists in order to hide weather info when I update the moon catalog text.
WeatherTweaks does NOT have a dependency on GI, but BetaWeatherTweaks does. Hence the circular dependency error
So mrov would need to fix that issue on his end?
We may need to coordinate to decide who should depend on whom. If his loads first, I can modify my own terminal text. If mine loads first, he can do whatever he needs to do.
@misty swallow bls fix
Is the mask stuff going to conflict with the popular Mirage mod?
Maybe I should've looked at the pre-release stuff because this update has been a mess for me
No it won't
It's only BetaWeatherTweaks that's borked
No
Some of the new features are not working in my usual profile and some older features aren't on a fresh one
SavePlayerSuits and ShowHiddenMoonsInCatalog aren't doing anything for me in my usual pack so there's something messing with them
and MinimumStartingMoney isn't working in this fresh profile
SavePlayerSuits probably conflicts with Suit Saver which imo is better anyways so the GI implementation can be disabled
I do have it disabled
MinimumStartingMoney is weird, you have to have like at least a value of 0 or 1 for StartingMoneyPerPlayer for it to work
So does AllowPreGameLeverPullAsClient actually work now?
Also is DisplayHiddenRoutesAfterTraveling by Batby not needed with this new update?
oh, that's not that great
I'm doing a dependency on GI to modify the weather displays to show the "uncertain weathers" (so [UNKNOWN] and others)
I'll try removing a dependency attribute today
- Findings:
- ShowHiddenMoonsInCatalog not doing anything is a TerminalFormatter thing
- SavePlayerSuits not doing anything... im guessing if you have too many suit mods that rely on More_Suits enabled??? Still got no clue
- Keeping SuitSaver anyway because I find no use from the GI config due to not being between different saves
@misty swallow
Yeah, this supprised me. ๐
Came to report here but you guys were already on it.
[06:25:41.2614340] [Fatal : BepInEx] Error occurred starting the game
[06:25:41.2629394] [Fatal : BepInEx] System.Exception: Cyclic Dependency:
- WeatherTweaks
- ShaosilGaming.GeneralImprovements
- com.Confusified.InsanityDisplay
at BepInEx.Utility.TopologicalSort[TNode] (System.Collections.Generic.IEnumerable1[T] nodes, System.Func2[T,TResult] dependencySelector) [0x0009e] in <fe49c90fe8e24102b42489c11910c71c>:0
at BepInEx.Bootstrap.Chainloader.Start () [0x0050c] in <fe49c90fe8e24102b42489c11910c71c>:0
Does this work the exact same as this, and therefore make it redundant?
https://thunderstore.io/c/lethal-company/p/TKronix/DoorlessStorage/
i'd assume so, i feel dumb for not seeing this option before unless its a new addition
Yea it's the same
@broken crescent any chance you could make it so that Monitors.Start() is a normal method called synchronously after you set up your monitors' initial assignments? it looks like that's probably the place that's setting the material after OpenBodyCams assigns its body cam material to the monitor
not sure exactly what the ideal setup is here, but that would at least solve the problem of the ShowBackgroundOnAllScreens option overriding the body cam on initial load
Yes it does
Sweet, ty both of you
Also
Would it be possible to make it so with this, you can have the clock still ONLY show when you're not in the interior? (So it shows in the ship)
So you can either have Vanilla behaviour, ShipClock behaviour so you can see the time outside (including in the ship), or what you have currently?
i am just looking to cut down my modpack as much as possible lol
the one on the monitor
yeahhh thats what i was thinkin
i know some i play with will complain but i'll tell them to just look at the monitor
Btw @broken crescent you did good, so glad to see the Time display no longer lag my game XD
@little spire @vapid shell Mrov just fixed the issue with WeatherTweaksBeta
also @steel lintel ^^
Alright ty<3
it should be working now
Tysm โค๏ธ โค๏ธ โค๏ธ
I'll do it properly later, but for now this should work without errors
It seems that 10% of the job is doing prototypes and exploring and it's the most fun. The other 90% is polishing and spending time on tons of little things that are not that fun.
suitsaver is not needed anymore on 1.2.5?
I wonder.. if someone wants to show uncertain weather, they should probably not have weather monitors displayed, no? Glad to see you could remove the dependency though ๐๐ผ
yeah, that would be one way of achieveing that ๐
i made it work by checking if GeneralImprovements is present after starting the round, not on plugin awake ๐
so there's no issue with me being loaded before your mod ๐
Nice
hi is this a terminalformatter problem or GI? ๐ญ
can you send your full log?
o wait lemme get the one after i itneract with terminal
i think i did it right not sure
both mods are up to date and this shows up when i type moons
naur
does everyone else's work?
this is the first time I see this issue
Alright
nope still shows planettime with ac disabled
o i disbaled lategame upgrades n interactive terminal n it works again
Update CSync to v5 (#1178407269994594435 message)
np
the thing is: other mods (MonsterPlushies) might not work because they're still targeted for v4
Okay so my suggestion is adding more options to the Medkit, because i would love it to have options like one time use or one time use per player
๐๐ผ good ideas, I'll add it to the backlog
I mentioned this a while back but it may have gotten buried, something simple like holding down the scan button to be able to scan continuously like every second or two would be nice
another suggestion lol:
one thing i saw a small mod do is make u able to use walkies while on the terminal (i.e. watching somebody with view monitor command and talk to them at the same time) would be very convienent
You can do that in vanilla, as long as you're holding the walkie when you start to use the terminal
Just hold down the talk button
I think the mod referenced was the one where you didnโt need to hold the button, any time youโd be on the terminal the walkie would just be on constantly. I used to use that one before switching the phone mod.
when I download the new update I cannot see the new config options in the config file, anyone know a fix?
have u launched the game after updating
yeah I figured it out
@broken crescent Small (hopefully) feature request. Would it be possible for you to add a couple more clock options? One to make the clock compact and move it more out of the way like LCBetterClock, and another to change the update rate so that 1 minute in game is 1 second IRL? It would be nice to be able to cut another mod out of my pack.
hey is rocket launcher ammo supposed to save now?
That would be lethalthings i think.
whoops lol youre right
I can look into it, sure. Resizing it is probably simpler, but I'm not sure I want to change anything that affects how fast time moves. Unless you meant change the update rate to once every in-game minute instead of whatever it is now
Whichever is easier. I was more so just looking for a consistent update rate like LCBetterClock has.
by default the game's clock updates once every 3 seconds
and each second is 1.4 in-game minutes
so the clock jumps forwards in increments of 4.2 minutes
you'd need to transpile TimeOfDay.MoveTimeOfDay to change the interval to something other than 3 seconds
or you could do it the easy way and just call the HUDManager.SetClock function every frame which might have some sort of impact on performance
i think this is the way LCBetterClock does it, anyway
anyways a value of (1f/1.4f) make it show each individual in-game minute
unless rounding errors cause it to skip a minute
actually (1f/globalTimeSpeedMultiplier) would probably allow for better compatibility with mods that adjust day time length
How does GI work with Mirage with [Image]?
Does this need to be true to make em handshake each other, or this setting is fruitless with somethin' like Mirage o, o?
Mirage has all the features GI have related to Maskeds
You can disable all of them in GI
so even with this false - mirage plays nice ('n vice versa- GI plays nice)?
They should yeah
๐
@broken crescent So bug with the teleporter, it only auto collects the first person teleported per round instead of all of them lol
oh so that's why it was so inconsistent for me
Oh really? Huh no wonder I never caught it, I only test with one connected player for multiplayer stuff
does the undoing of hidden moons also work for modded moons?
Wasn't there an image showing which number corresponds to which monitor? ๐
1234
5678
Or with Bettermonitors
1 2 3 4 5 6
7 8 9 10 11 12
I think mods should pin that already ๐
I swear I'll add a reference image or two to the wiki soon.. lol
anybody know the answer?
like can u unhide modded moons like cosmocos and starlancerzero
got you a wiki image
used Lunxara's screenshot to edit.
That's a great one in the meantime. Then I'm going to actually edit the monitor texts in the code to make it super clear which is which
ok tested it and doesnt work unfortunately
might just be cuz the terminal doesnt fit all the moons i have lol, i cant see several moons
and i heard that terminal formatter fixes that, but i tried it and it doesnt for me
terminalformatter probably changes the node
due to the setup of terminalnodes multiple mods changing the moon catalog are probably incompatible
so is there a solution for that
Batby made his own mod to show hidden moons after routing
My bad I got confused with the other convo lmao
Idk why, but I can't see the weather and difficulty of the moons in the moon catalogue, I checked the config and everything is well. This may be because of the last update or a recent update of beta weather tweaks
type preview all in the terminal
I did it, but it didn't work
oh, in lethal level loader, ok, I will try it
I mean the terminal command should still work
i will check that, but in the terminal it didn't work
you need to be on the moon catalogue when you type that I'm pretty sure
ok bet
I know, but it didn't work, I tried in the previous version (1.2.4) and it worked
even modded?
Yes
noice
Wiki is updated with reference images but it currently references a config setting that won't exist until the next update is released
Will the FancyWeather monitor be fixed in the next update?
Remind me what's broke about it?
Bottom part is cut off
Ah without better monitors, right. Let me make sure to do that next
Ugh I can't replicate it, when I test on LAN it works on multiple consecutive bodies
for what it's worth
Yay another bug exclusive to Online mode
XD
i was able to get it to trigger on 2 bodies in a row on online moed just like 10 minutes ago
but it's definitely not 100% consistent
as for why, im not sure
Hm yeah that's odd, because all I'm really doing is calling the vanilla SetItemInElevator function if it teleports a dead body. It might be a check within that vanilla function that is inconsistent at times. I'll ignore it for now I guess ๐
maybe it has to do with ragdoll positioning network syncing
desync or delay could cause it not to register perhaps
if the body isnt autocollected from the teleportation, picking it up and dropping it again will collect it in 100% of cases
There we go
~~i want my bee suit even when host doesn't have it ๐ ~~
~~i hate the orange suit ๐ ~~
bee suit my beloved
anyways i have bug to report
the external and internal cams quality go back to default vanilla quality when you quit from the first match you opened since game launch
Oh that's a good find and I know what's causing that
:D
One sec I'll pull up the code for it
return pct > 1 ? "Radiant" : pct >= 0.75f ? "Healthy" : pct >= 0.5f ? "Injured" : pct >= 0.25f ? "Badly Injured" : pct > 0 ? "Near Death" : "Deceased";
radiant?
> 100% shouldn't happen but: Radiant
= 75%: Healthy
= 50%: Injured
= 25%: Badly Injured
> 0%: Near Death
<= 0%: Deceased
i see radiant is prob possible with items that will heal you over the 100% limit
In theory but my code is also trying to keep track of max health, and use that in the calculation. So unless my code misses a time when it goes above it, it should always be out of 100%
o ok
@broken crescent the 2 is falling
@broken crescent I see three options to fix the issue with the material being replaced by GI
- A slight rework of the monitor setup so it's possible for me to set the material on load-in based on a Harmony patch ordering (currently I believe it runs in Monitors.Start() and I'd rather not add another hook just to run after that)
- An API where I reserve a monitor slot and get back a renderer and material index to use (least work for a reliable solution)
- Implement explicit OBC support into GI, so that the body cam can be placed on one or multiple monitors in the GI config
what are your thoughts?
that's normal, the screens aren't flat, though I guess there could be some word wrap or something to prevent that from being as visible
Word wrap on the integrated monitors is a little imperfect. Honestly I should probably make sure the profit quota always takes up two lines to avoid that
Sorry, I've been randomly cherry picking which messages I pay attention to ๐ could you remind me what the material issue is? When I have time I can look into replicating it then review your (and/or my) suggested solutions
when displaying backgrounds on all monitors is enabled, the body cam gets overridden with the blank screen material on initial load-in
I also had reports that it was happening without the option enabled, but I wasn't able to reproduce that bit so I'm not sure what exactly causes that
it's probably related to execution order as well though
as long as GI is setting the materials itself there's a chance that changing the hooks that activate those materials may break it
currently, turning the screen off and back on just happens to work because you set the material in a prefix and I set it in a postfix
Ahh ok I can work with that info thanks, I'll write it down and let you know as soon as I do anything with it
Sigh and of course I'm having trouble replicating it.
Using GI UseBetterMonitors = true, ShowBackgroundOnAllScreens = true, ShipMonitor6 = None
Using OBC GeneralImprovementsBetterMonitorIndex = 6
I've tried it on other screens as well and I always see the body cam. Anything obvious I'm missing?
For example you can see I have monitors 6 and 14 set to None, the blue background is enabled, and the body cam is visible on 6
lemme check on my end, I think I tested it with monitor 14 but I don't think it should matter
hmm, weird, I can't either with just OBC and GI
lemme check the pack this person had issues in
๐ซ
oh boy
I can't get it again even with the code
guess I'll have to screw around with it some more
@broken crescent where do you instantiate the Monitors component? is it in the asset bundle so it spawns with the better monitors prefab?
and if so, where would that instantiation happen?
I'm wondering if this could be intermittent depending on the undefined ordering of Update() calls
oh yeah, I guess it happens in StartOfRound.Start(), maybe that results in the Monitors.Start() being called in an undefined order in the update loop
So for my pack Shaosil I have it on the default monitor which is 14, if you land the ship then go back in orbit then it gets set to the blank screen
it probably doesn't recursively check for new components to call Start() on
is that with the background enabled on all monitors?
018f5609-7204-6f21-8192-2b8b3649998d
Yes
My pack if he needs it
hmm ok
the time I reproduced it was on initial load-in
very curious
I really tend to think we need my first or second solution [here](#1199836228858675330 message) or something that has a similar effect
otherwise, even if we fix whatever event ordering is happening here, we'll have to avoid changing that in the future which is quite limiting
For my pack btw in the test the monitor should be bright green by default, I have disable when target is on ship set to true lol
gotcha
Ye
(you can make it blue if you want it to match the other monitors though)
I used that for performance reasons but dunno if it's needed since I disabled the other cams
I'm not sure if disabling the other cameras does anything, unless you use the OpenBodyCams option for that
in which case the external is still active
It does the ship performs smoother when not having the InternalCam set to anything
Yeah your bodycam when disabled while on the ship is that bright green
ah yeah, after landing and taking off I got the darker screen
Yeah I used the darker green to match the main monitor display lol
I would think that would have to be Shaosil's code doing that, but I don't really know why it would be setting that on takeoff
It almost looks like it refreshes the screens after going back in orbit
That's all I can guess
it's definitely possible, I haven't found the code that does it though
Checking into this. I am refreshing certain text based screens but I don't think I ever touch the materials after initial assignment
So far I've had success replicating it as soon as I load in using Lunxara's profile
So that's something
do you mean you replicated the screen being the darker desaturated green?
it should not look like my screenshot above to be clear
Yeah, instead of showing the body cam
the body cam isn't visible by default since it's set to disable when its target is on the ship
it's the color of green that's important, if you compare the right to the left in the screen shot above, they are different, which means that it's using the body cam's material which has a floating-point emissive color instead of a hex code
so when you see that difference, it's working correctly
I was also going to try to make it so that I can display the original material assigned to whatever monitor the body cam is on when it's disabled, but it appears that I'm not getting the external camera's material when it's assigned to the same screen as the body cam
I think that part of the reason why it doesn't break on initial load in OBC 1.3.0 is that I'm lazily setting up the camera in Update() so that it (usually) runs after your code, whereas I have to initialize everything a bit earlier in 2.0.0 and then it doesn't ever run after you set the material
meaning that it's initially showing the wrong material, and then the material that it caches for the original material is your prefab's initial setting
I set up the body cam in a PlayerControllerB. ConnectClientToPlayerObject() finalizer specifically to run it after your code, but unfortunately that doesn't get me past the Start() function of your monitors component
for me to fix this on my end, I think I'd have to detect GI and run my late initialization method as a postfix to Monitors.Start() instead of ConnectClientToPlayerObject(), but that's really ugly
perhaps I should just disable the feature when GI is installed for now, 2.0.0 has been very delayed already
Yeah I kinda see what's going on. I may(?) be able to fix it more simply on my end but I'm not sure yet. But this is my current prioirity so I'll keep you posted as soon as I have an update
I'm thinking the best thing we can do is option 2 that I mentioned before, so that it can be explicit on both our ends what we're doing with the monitors
but I'd also need API to grab the original material assignment for the monitor I'm reserving
we can try to bandaid over this, but I really don't like doing that because I can imagine it'll just screw us up later again
Yep, ideally no bandaids
I never checked, I'm just copying the existing canvases and such for the old style. It does look a bit odd
Ok I think I have a decent fix for it, give me a couple more minutes to run a few more tests
Also sir what in the ever loving
that scared me
Big Red Boi is our protector
@narrow oriole Anyway yeah this should work. I tried to do the least amount of work while also future proofing my monitors against your mod (or other mods) that might want to overwrite materials on my monitors. It should work no matter who starts first, and continue to work as screens' powers are toggled.
Basically each time I go to assign a material, I make sure I'm not overwriting something unexpected. If there IS something unexpected, I set it to use that from then on.
That allows it to work both ways - if mine starts first, yours will overwrite it and be fine (and it will later update to be yours permanently after the power toggles)
If yours starts first, I will detect that when assigning materials and skip that monitor. Win/win?
gotcha, that could work
at least to solve the problem as it stands in stable OBC
what about giving a way for me to get the material that should be assigned to a monitor, regardless of execution order?
as it is, I can't get it without waiting for the next frame I believe
For example?
as I mentioned, I'm looking to make it so that if the body cam has no target, it displays whatever is supposed to appear on the monitor if the body cam was never placed there
currently, I hook into ConnectClientToPlayerObject after your hook to set up the body cam, but it seems as though you actually assign your materials in a Start() method that gets called later, so I can't get that material
hence, I'll have to start a coroutine and wait a frame to initialize the body cam if I want it to work
When I made it there was a fairly big reason I had to put the initializations in Start(), but I can't remember what it was. But it meant doing some rather complex things on my end too (storing "things to assign" in InitializeMonitors() first, then Start() references them, etc).
Hmm. I do store a list of initial material assignments though. If I had a public function on the Monitors object that retrieved a material by monitor index, would that work for you?
my understanding is that that list isn't populated in Monitors until Start() is called?
but if it was, yeah, that's be fine
Basic execution flow is
StartOfRound.Start() calls InitializeMonitors()
That then creates a Monitors component which stores whatever TMPs and Materials that will be assigned when it starts.
Then in Monitors.Start(), it calls back to those prepopulated lists and updates canvases and materials as needed
Ok cool, I'll let you know what it's called and all that, should be straightforward
Well... that may only work with internal and external cam monitors, not text based ones. Checking
ah, I guess I checked _originalScreenMaterials thinking it was the first thing being populated since it's first in the file
yeah, that's true
or I think so from my reading
I may be able to return whatever material is associated with that index
would be nice for that to work as well, but the main thing I was thinking about is the cameras
sounds good to me I think
Unless I'm missing something, calling GetOriginalMonitorMaterialByIndex() should return you the expected "original" material after this is updated
(new function)
I'm not 100% sure it will work with text-based monitors. But cams should be no problem
I could probably throw that method into my own compat class right? so that I don't have to depend on a specific version of GI?
or did it need some changes elsewhere?
Using reflection? You could, yeah. I've been making changes but I don't think I've affected those two fields
so i tried to have more then 100% health but radiant didn't show up so idk
Yeah I should be detecting any time the health goes higher, so it would just become the upper limit for the percentage calculation. So you could have 800/1000 health and it would just say Healthy.
That's basically just a catch all if I missed something
Bug of GeneralImprovements 1.2.5
Can you pass me a profile code?
Sure, I will pass it later, rn I'm travelling
got around to testing this out a bit ago, it seems to work pretty well so far, thanks!
haven't tested text yet though
I had to rework some stuff for camera culling first
Awesome! I'm trying to fix one or two more things then I'll be able to release my update as well which should further solidify things
ran into another bug where i stored the shower and it got stuck floating outside the ship for the rest of the game
clients saw it in their original spot (i am the host)
i couldnt take it back out of storage and i couldn't interact with it either
general improvements is the only mod i have that touches furniture and i never had this issue before the update that added savefurniturestate so im guessing it has something to do with that
i've disabled it for now
(text works too! it's a little stretched on the big monitor but I imagine it's always like that?)
I wonder if it should use point sampling on the render texture
aspect ratio is off too though
Hmm not sure why that would happen but it's possible it's my fault. I'll check out buying showers and see if I can replicate it
Oh wow I'm actually surprised that works lol
Completely untested ๐
yeah, I guess I didn't realize that only the text materials were already present in that list
Hey I use GI and almost everything works fine until I played in a lobby with my friends. So as seen in the picture I use "InternalCam" on the left monitor. For me the Cam worked fine I could swap to everyones Cam and could see their movement. But after my friends joined and I explained them those terminal monitors, all of them told me they couldn't see the "InternalCam" working as intended. They just saw a black screen there as someone had turned of the monitor? But for me everything worked fine.
All of them have the exact same LE Game folder and subfolders thats even stranger
Do you use OpenBodyCams? We have fixes coming for that soon
looks too bright to be OpenBodyCams to me 
Yes I swapped from HelmetCams or something like that to OpenBodyCams because someone told it is better atm
oh, did you increase the emissive then?
it looks odd to me
late joining as a client could maybe also cause the issue where the material gets replaced though
would explain why that's happening, and yeah, I think Shaosil's upcoming update should fix it
No that value is exactly the same I thing in the mod config I just swapped from helmet cam to body cam the first checkbox
interesting, would you mind sending your GI config so I can check it out?
I will test a few things shortly it is a good hint that it could probably work if a friend hosts to see if his internalcam works then
actually, I suppose maybe you just have your gamma cranked up
How can I do it the best way?
don't worry about that, I'm guessing it's the gamma
could be monitor wise I dunno but thats not what issues me the most haha
it might just look weird on my screen
How do I send you the configs? I dont thing just uploading the config file from the folder right?
Alright yeah its an Issue for the clients who join a lobby. The host can see the cam normally
Are they by chance using SyncMonitorsWithHost?
In the upcoming patch that shouldn't matter but it might explain the behavior
Actually I'm not 100% sure that won't break things, I'll try to remember to double check that logic
should be possible to test in LAN right?
I think so
I could help you test on Steam if need be though, I can send the upcoming build of OBC as well
side note, it would be nice to prefer sharedMaterial[s]? over material[s]? on renderers so that we don't end up cloning materials everywhere
I think that's the reason I'm seeing a clone of the external camera's material every time I switch the body cam off and on
SyncMonitorsWithHost isn't in the config right now or an extra mod right? Never saw that or used something like that
Oh well I'm stupid it the second Checkbox in the config well it was set to true could be the issue
(specifically, I'm assuming these two lines are relevant to my issue)
yeah, I think Shaosil's theory is that it's setting the screen materials outside of the normal flow that OpenBodyCams relied on because of that
the body cam should show up after switching the screens off and back on, though, I believe
I will test it turned it of as it is normally don't know why I set it to true if it is false by default
Ok yes it works now it was the SyncMonitorsWithHost Checkbox set to true
But there isn't an option to change the green color from the "ExternalCam" Monitor? Would it be possible to create a config to change the emissive colors for that cam?
I'm thinking about adding that to OpenBodyCams, but Shaosil could also borrow my code for that if he wants
I'm actually kinda prevented from implementing that feature when UseBetterMonitors is enabled because of the material cloning issue I mentioned above though lol
I'd have to basically just set it every frame for it to stay set
...unless I change it before GI gets to it maybe
Oh ok well if its to tricky to code no problem. It isn't that much of a problem for me. But nice to have it for sure haha
@broken crescent uuuuh why don't you use one harmony instance 
I just realized my StartOfRound.Start() postfix isn't actually running before yours using the HarmonyBefore annotation, so I went to look at what your Harmony GUID is and see this 
I don't like having to rely on HarmonyPriority but this kind of forces me to
I don't know if it's established practice, but I would recommend using the mod GUID as your Harmony ID
I caught some of that in the upcoming patch, I'll double check though
๐ honestly because I don't totally know what I'm doing, I've never used Harmony or even created a mod like this before. I'm a good programmer but don't have experience modding
So I'm not even sure what you mean by using the guid as a harmony ID, I thought I was
my understanding is that Harmony.CreateAndPatchAll instantiates a new Harmony instance for you with a randomized GUID, applies the patches in the class and then returns the instance to you
perhaps it creates a GUID from the class path though
When I first made the mod that was the only way I knew how to patch stuff but since then I've seen other methods, like class attributes. I'll look into it eventually
class attributes can be used with the Harmony.PatchAll instance method as well
which is what CreateAndPatchAll uses
I'd recommend just instantiating one Harmony and then calling PatchAll on it repeatedly
^ that's what CreateAndPatchAll does
Cool ok, if it's not a huge refactor I'll try to have that in the next update
it should be a find and replace
I'll have to stick with HarmonyPriority for now though
Side note, I'm super happy unity games are this easy to mod, like it's practically no different than typical coding for a .NET dev once you understand how Harmony works. I actually had no idea before researching it for LC, I assumed most mods entailed nonsense like manually disassembling things and/or C++ at best.
Unreal games are a different story though
yeah, I was also surprised to find out how easy it is
Of course it helps to have poked around in Unity over the years too so I had a basic understanding of the script flows
I don't know anything about how Unreal does it, but I suppose they might compile their scripts differently since they have visual scripting
To my understanding Unreal may use C++ compilers, which is its own beast. Unmanaged code modding? No thanks
I've tried a few times to find tools to check code and stuff generated by Unreal engine with no luck
to be fair, I wish there was a way for me to do more useful stuff in C++, but yeah, for the average mod that's way too painful
CullFactory having to do a bunch of native calls that take way too long just to make certain objects invisible is quite frustrating
Haha yeah
they have a half-baked culling API that doesn't even do anything yet in the SRP lol
Ew. And yeah you gotta love tracing up a call stack to debug something when you see [Native] or whatever it is
the best thing is when grabbing a value inexplicably takes 10 times as long as it seems like it should because the value was uncached
Yup. That stuff is not only difficult to debug but simply boring
when I was profiling culling, about 25% of the time was spent getting the camera position
Interesting
all because it had to run through the transform chain to apply all the matrices
(and perhaps also calculate the projection matrices)
in fairness lethal company is a mono game
if a game is compiled with il2cpp it becomes a lot more of a disaster
Sure. Luckily a lot of devs use Mono
but yeah unity modding is very accessible and lots of fun
honestly i just love using unity in general
kind of a shame things have gone the way they've gone the past few months
over there
lol
Right..
or the past few years, really, but especially the last few months
Because i love this mod, i recreated the issue in a test profile, sorry @formal oyster to have stolen your job ๐ซข
018f5ca7-0ce0-2679-69c0-d2badeaf41f7
I passed the code yesterday, in dm, but maybe he needs to test more, so it's fine ๐
Ohhh ๐ค
Hm let me confirm something real quick - @misty swallow, if someone is using any version of WeatherTweaks or BetaWeatherTweaks, am I right in assuming the terminal's moons catalog should never display the weather? It looks like you're always patching that out by replacing [planetTime], unless I'm missing a config setting somewhere
By default yes
Although you cannot toggle it in the Beta version
My idea was: because of the "uncertain weathers" (when the displayed string is different than the weather itself) there could be issues when terminal tries to get the SelectableLevel.currentWeather
because the strings won't match
so i've disabled the default terminal (replacing [planetTime]) by default and i'm relying on mods like LLL or TerminalFormatter to display the correct weathers
Ah I see.
Ok, then I think the "problem" is I always strip out weather info when formatting the moons catalog if I detect WeatherTweaks. So I'm just making sure that's the intended behavior
hmmm
i've realized that the actual reasonable thing to do would be to resolve SelectableLevel.currentWeather via my mod
but it's an enum
the weather stuff is really cursed ๐
lol
i know that HellWeather did some enum trickery to inject its weather type
but it wasn't working for me before
@formal oyster I used the profile code you gave me and I'm seeing moon prices as expected (in yours too once I enabled it @neon quarry) . If you're looking for weather and difficulty though, that might be from another mod. WeatherTweaks usually removes weather info from the catalog (as do I if I detect that mod), but other terminal formatters may be doing additional things
difficulty and weather (in that case) would be just LLL
ok, thank you! I will try to find a mod to see the weather then
With just 11 mods in my profile and no terminal formatters that can't be from another mod
If you downgrade General Imrpovement to 1.2.4 weathers will be visible again in the terminal, so my guess is it's a conflict between WeatherTweaks and General Impr. 1.2.5
In 1.2.4 my mod overwrote what WeatherTweaks was doing, hence displaying the weather, which shouldn't be happening if WeatherTweaks is enabled. In 1.2.5 I fixed that to strip out weather info from the moons catalog if WeatherTweaks is detected
I assume if you disable GI 1.2.4 but leave WeatherTweaks enabled, you will again see no weather
Just tried and nope, I can see weathers fine
In the profile code you gave me? LethalLevelLoader is also formatting the terminal and adding weather. If you disable that, you can see the weather disappears as expected
Basically, having the WeatherTweaks mod is supposed to strip out weather from the moons catalog. If that's not happening, it's because another mod is mistakingly overwriting the terminal text and adding it back in.
https://github.com/Shaosil/LethalCompanyMods-GeneralImprovements/releases/tag/v1.2.6
Published v1.2.6 to GitHub for testing. I will either deploy tonight or tomorrow if there's no bugs (heh)
Make sure to update the assets file if you download from GitHub as well, there were minor changes
Does the monitor change mean the left monitors will only be visible if there's something on them?
No I added an option called AddMoreBetterMonitors, which if set to False will completely turn off the additional monitors mesh. Some people were not using better monitors because they didn't want the extra physical structure, so that's optional now
ic
Just processed that the option completely replaces the models of the vanilla monitors oop
yeah i didnt even realize that it wasnt just adding more till reading these notes hahaha. glad this feature was added tho, i like using that corner ๐
Out of curiosity, will that screw up the monitor assignment IDs in OpenBodyCams? Do I need to change the order when that option is false?
I'll test it out in a bit, but I'm not sure exactly how these will interact now
Oh hey good question, sorry yes that will absolutely mess with it
I assume the paths for each mesh are still the same as BetterMonitors=True in the current stable release?
also, given that the option can be changed at runtime with mods like LethalConfig, how would I detect that this option was enabled when the monitors were initialized?
(perhaps now would be a good time for me to request that you add an API for me to get the monitors' renderers and material indices so that I don't have to worry about your implementation details)
Not sure I understand what BetterMonitor do
I thought it only added the extras on the left
it allows you to reposition cameras
oh, I see you also modified the type of _initialMonitorAssignments..
I really need a public API, I won't lie
this is not tenable, my code is gonna balloon in complexity without one
It basically makes the monitors look better (textures embedded onto the screens instead of floating in the world) and allows you to reposition internal and external cams like Zaggy said
That's fine, I think. What exactly does API mean in the context of this mod? Just some public methods on Monitors()?
I'd tend to prefer a static class since the monitors are a singleton
if it provides methods for getting a renderer instance and material index from a monitor index, and a way to get the material instance that would be assigned by GI to a monitor index as well, that should work I believe
I'll see what I can do
for getting the material assignment, it would be good to make it so that it returns the background color from your mod as well, and only return a null material if there is no background, no text, and no camera assigned
that way, I can fall back to the background color when the screen turns off
this is what I was doing before your update
private static Material GetOriginalMonitorMaterialWithGI(int id)
{
if (BetterMonitorsComponent is not Monitors monitors)
return null;
if (monitors._initialMaterialAssignments.TryGetValue(id, out var material))
return material;
if (GeneralImprovements.Plugin.ShowBackgroundOnAllScreens.Value || monitors._initialTextAssignments.ContainsKey(id))
return monitors._originalScreenMaterials[id].Value;
return null;
}
I should just be able to return you whatever original material is used by the monitor at that index. That should be whatever is there, whether it's a text canvas, camera footage, or solid background color.
would that exist before Monitors.Start() though? that's what made this necessary initially
or maybe I'm misunderstanding what you mean
Well technically the materials aren't populated until Start() anyway
the fields I access above are populated in the ConnectClientToPlayerObject hook before I use them, but _originalScreenMaterials doesn't get assigned the camera materials by that point
Yeah only the internal and external cam are known before that because they exist already (and are plopped into _initialMaterialAssignments)
The other materials for each monitor can't be known until the gameobject becomes active (I think?), which might be why I have them being assigned in Start()
I could go back and see what all can be done without waiting for Start() I suppose
wait I'm confused
all the materials exist by that point
they exist as soon as you instantiate the prefab really
you've just got them in separate places
Hmm ok maybe I need to refactor that and see if the Start() stuff is really necessary
I would have to imagine it's not but maybe there was some niche issue with it
I'll plan on doing that next
yeah, definitely not the priority since as long as I have that API I won't have to interact with that anymore
I mean I'm not sure I can create an API without some type of refactor, right? Since I can't get you materials that I'm not storing yet
I thought that you were before
do you mean the functions you're assigning instead of the materials?
I guess a refactor would be good, but to be honest I'm not really sure what the purpose of some of the code was so I don't know if it's necessary or not
up to you I suppose
๐ man I don't even know anymore. I think I need to refactor at least to the point where I don't need to assign actions and functions to late initialization, if at all possible. I'm getting more confused with each addition
I see, i didn't know that
Thanks for the explanations !
But now i'm confused... why WeatherTweaks is removing weathers display from the terminal? Is this some kind of feature, because now it is displayed on the central monitor ?
Would it be possible to make the furniture placements feature working even when creating a new save?
So they always are at the same position no matter the save
I do want to do that eventually, kinda. It wasn't directly on my to-do list but I can put it on there. I thought about doing that with suits as well. But doing it per save was faster and easier since a lot of the vanilla code is already set up to use that per save
Not too important, but it would be nice if you added the ability to lock doors along with the rest of the key configurations you've added. I've just been using a separate mod for it, but I think it would fit in with the other options
Btw @broken crescent dunno if you included it but I wonder if you could make it so masked enemies don't spin on the radar if you haven't. I know MaskedAIRevamp does this and you can disable it's experimental features but the mod is abandoned at this point and isn't worth the bloat or performance issues it has
I saw you said you added new settings with 1.2.6 so you may have already included that
๐
Btw 1.2.6 sounds like a real W Update btw, I imagine there should be a performance uplift from it as well due to the misc changes
Funny, I was actually looking into that already today. I think it's as simple as disabling the animator component on the masked entity's map dot, since it has a fake spin animation. So yeah that option is probably coming soon. I'm not sure if I should make it a separate option, or include it in the existing enum, or just do it if the player has "All" for that
Maybe seperate option for compat with mods like Mirage
Unless of course the enum is already compatible lol
@proper quarry if you want maybe you can check if it's compatible ;o
i see the update
Hello! I believe GeneralImprovements + Mirage causes an issue where the game will often crash when trying to host a new save, even if GeneralImprovements' masked features are disabled
The crash doesn't happen when Mirage is disabled or when using GeneralImprovements 1.2.4
Thanks for the heads up, I'll check it out
just got ejected and got suprised for a second because my furniture stayed in its position
until i realized it was this mod :D
Is it GI issue that internal cam resets to normal resolution when rehosting a save, it stays on default on new saves as well. Rebooting game fixes it
I'm not 100% sure Mirage + GeneralImprovements causes the crash, but I'm 100% sure a crash happens with GeneralImprovements 1.2.5+
Also, it doesn't always happen. It happens half the time, you may need to retry a few times
Hm I thought I fixed that in 1.2.6 but I didn't test it
I had this yesterday so not sure if that was 1.2.6
I don't think it does, I keep meaning to fix that
lol
i want to ask is it possible to allow you to drop items while in flight from the tulip snakes
i just died by the stupidest means because being in the air doesn't allow you to drop any item
or atleast swap to any other items
Oh I didn't know that (I always smack the tar out of those buggers lol). How did you die from not being able to drop something?
i hate these guys now
also i kinda like the new random day 1 seed i got a seed where shovels were 80% off
I'm still not sure if having 0 as the same seed in every new game was intended or not. But I didn't even make an option for that since it felt off
would it also be possible to reselect which starting mode you want? or is it not possible
(sometimes i need to test stuff but closing the game is kinda annoying)
Not really, the value of that setting gets checked on boot, so even with LethalConfig you'd have to restart to have it initialize the proper networking
):
i guess closing the game and opening is he only thing thats possible
This has now been fixed by default in the latest release v1.5.13+
Are you also planning on adding a walkie use keybind?
Asking since there's the flashlight keybind in the config ๐ค
Peeked at this real quick, and tried creating and hosting 10+ games and didn't encounter any crashes. I might have to use a profile code for this one
I can add that to the backlog
That would be awesome :3
Strange... I'll give you the profile code of my modpack so you just have to update GeneralImprovements. Perhaps it is caused by something else
018f6301-eab7-4228-4959-5998efa81630 (I updated it)
I hope you don't mind the translation
if it's any ai changes, it's already 100% compatible
since mirage doesnt do any of those changes itself
i've played with it for a bit for a mod before (https://thunderstore.io/c/lethal-company/p/mrov/UnlockableDefaults/), maybe the code will be of some use to you ๐
What exactly is happening for you? When I host a game (new save or otherwise) it has always successfully loaded in for me ๐ค seems like this might be tricky to track down
Mrov leaving his child on your doorstep Shao and running
like no joke I made that so someone would yoink it and fully develop it ๐
because the idea is nice but I've spent too much time on that
and it wasn't even halfway done ๐
hey Shaosil. i have encountered a few minor problems with your mod.
have a look
would be cool if instead of dead it shows up as Unknown
since there seems to be no records of the masked anywhere
i don't hate the "deceased" honestly
it's pretty creepy
but for what i have seen it shouldn't look like this
I'm not (at the moment) doing anything to prevent people from using weather monitors, even if WeatherTweaks are enabled. In theory, if you didn't want to see weather, couldn't you just not use weather monitors?
The deceased description is a legit bug though, I originally had them saying that only when they've spawned from killing/possessing a player (so it's like that player is dead and now a masked)
But then I made a change and accidentally made all mask scans say deceased. I'll fix that ๐๐ผ
i see. thank you
Wait hold on
I thought you added compat to unknown weathers by having ?????? Show up
Mrov did that not Shaosil
Lmfaooooo
lol to be fair I COULD add that, it would be easier on my side since I already detect WeatherTweaks
But also, like, why use weather monitors then ๐คฃ
But I'll plan on doing that anyway
"He's learning from me, it puts a tear in my eye" - Lyra
"One day we shall all gather together and yell at Mrov, it's a tradition XD"
please don't ๐
i mean - it's convinient to have the weather condition displayed ๐
but for the animation? i honestly don't know ๐
i did that so it would look nicer ๐ฅบ
it's fine. take your time
Well because weather isnt always Unknown
Sometimes you can see it sometimes you cant
Oh? That may be the missing piece then
I assumed WeatherTweaks = Unknown Weather
You can't ever stop the ancient tradition of yelling at you Mrov
lol
No lol thats just a part of it
it's just a possibility ๐
I saw that too haha
but yeah, when the underlying true weather is just shown it's breaking the immersion a bit ๐
wrong thing in the clipboard, sorry
Ahh, see I equated "don't show weather in terminal" to "weather should be a mystery" lol, I didn't examine your code too closely, my bad
Man's running off a script with his responses now
Too much Stanley Parable @misty swallow
I'll make a note to have my monitors work better with WeatherTweaks soon
no worries! ๐
@broken crescent not to rush you, but do you think I should wait for your API to be available so that I can use it in OBC v2, or just release with support for the stable version of GI?
I've been kinda sitting on this update for a while due to these compat issues
I don't have an ETA on that API yet, sorry. I plan on refactoring the monitors code when I next have time to work on GI, then have some type of API for you around that time or shortly after.
I wouldn't wait on me
gotcha, will look into releasing it soon then
also, I forgot to mention but I think it would also be helpful for the API to also indicate whether the monitor model replacement is active in the current game, since the config option could be changed at any time
General Improvements
Hey checking in to give my say that I think this mod is absolutely incredible. I have one thing to note and that is that conductive items in the slots from ReservedSlots don't use the UI change of showing items currently conducting lightning. Is it an issue with GI or RS?
Supporting ReservedItemCore is on my to-do list โบ๏ธ
alright :)
That looks like a LobbyControl or LethalThings error - it just happens to come after one of my logs
LethalThings always had issues with sales for me
Easiest fix is disable those mods ๐คฃ
I've had that error even without LT
I've never seen it before tbh
So it's probably LobbyControl
really?
I remember Matty telling us it was a vanilla bug
@short frost said it's an issue when LT and GI are paired together but we had it without LT so
lol
i've never had that issue and I use LobbyControl and GI
its mainly an LL + combination of mods that try to display discount stuff afaik
+1 here
also wanted to ask, am i gonna be fine if i set the new masked thingy setting to none and just use mirage?
I doubt it's necessarily related to either, those are just wrapper hooks
MonoMod puts normal patches into the stack trace even when invoking the original code
that's what that DMD<>?952582720.Trampoline<StartOfRound::PassTimeToNextDay>?-911378270 gobbledygook is
it's very annoying
judging by the code that is actually triggering the issue, it looks like one of your mods is adding a buyable item too late in the game starting process @light girder
at least it seems that way, although the IL bytecode index doesn't actually line up with an index out of bounds exception, barring any optimization
optimization may explain it though
I'm guessing LL has a buggy unregister feature that LT uses and some other mods may use which flares up badly with discounts
Could be this
This issue got worse after the update for @north pagoda's LCGoldScrapMod update
it doesn't seem like LethalLib modifies Terminal.buyableItemsList after Terminal.Awake(), except when printing a terminal command, in which case it would restore the original list after it's done
so it should only get screwed up if an error occurs during TextPostProcess() from what I can tell
I was only reported the bug with lethal things and when I asked around I was told it used a buggy LL feature for unregistering items so dunno
Well Simon confirmed he immediately reproduced the issue with only his mod and GI
Yeah
Terminal.SetItemSales is a vanilla method
Simon is trying to fix it
so if that's throwing an exception, it's likely it's not even a conflict
unless it was highlighting a specific patch as causing problems
Yeah something with the mod is causing that vanilla method to break
Which isn't a GI issue
just wondering what GI would be calling that's conflicting with my stuff, as it's my first time downloading the mod and it didn't happen before
so in laymans terms it worked on vanilla
as far as i can tell it's not generalimprovements causing the issue
it's just highlighting the issue because generalimprovements fixes a bug where the host of the game doesn't see item sales on day 1
Well is it perhaps still an issue regarding that one setting in BepinEx relying on being true? and it breaks cus it's set to fale?
any time items go on sale it is probably breaking your mod
Yeah
there's like
one thing
that's bothering me, which could be causing it
also, just to be clear, do we know what method is causing the conflict? it was SetItemSales right? otherwise I'm not sure what code I call on top of that that's kicking it in the family jewels
terminal.setitemsales is top of the stack trace of the exception
index out of bounds exception
my guess is that you need to resize the array itemSalesPercentages
wait
it only gets initialized once, looking at the code, and it needs 1 index for each item in buyableItemsList
lol
yes
there you go
yep that must be it
after you add everything to buyableitemslist you can probably just manually resize
oops lol thought that would happen automatically using that lethallib template ๐ญ
haha silly me ssssssssorrryyy
yeah that should hopefully be easy
Um
Quick question
GI is the mod that allows you to pick stuff up before the lobby begins right
Yeah it can
that is a feature yes
that would make sense
they are probably added after GI iterates through all the existing items and unchecks the flag that doesnt let them be picked up
or they at least aren't being added to the list GI iterates through
used to work before im like 56% sure
Hum. Yeah I moved that code to a more logical area and it may be happening before certain other mods init their own items
not a huge deal i dont think
I can look at decreasing the priority of that part
perhaps sort of a blessing
whenever i play with my friends they tend to pick up all our jetpacks and make the worst noise imaginable while we're stuck in orbit waiting for everyone to join
lol
Well jetpacks should still work
yes, it's true
But not modded items I expect
Well, TIL that I probably dont need this anymore
yea lmao
yeah GI does the same thing if you have it
The Great Consolidation
I think i installed GI and that around the same time so I just
kept it moving forward as time went on

I just realized that the only reason I did not get this error during my hundreds of tests was not because I didn't have generalimprovements installed, but because of literal, incredible, unbelievable godlike luck of somehow avoiding the landmine that is the single item that broke it
by all means should that have broken months earlier
Development in a nutshell
this energy
Glad you figured it out with the help of @sour rain c;
It's a good thing we realized it was your mod so you could hotfix this c; having the game break every other game was chaos XD
It's all good, things happen lol
and i swear this mod will haunt me in my dreams lmao
How dare your code have bugs ๐
I would never I am perfect I breathe ram 
I don't even see the zeros and ones anymore. I just see blonde, brunette, redhead...
I just see dark spots
or... maybe I should turn off my computer and get sleep
nahhhh
if you're using LethalLib I would've expected that to work from looking at the LethalLib code
the sales array gets assigned in Terminal.Start() based on the size of biyableItemsList, so you may want to look into why that wouldn't be happening
He's not using Lethal Lib, he swapped to using his own method, he used to use Lethal Lib but he had a lot of issues with it
I think when he did the migration from Lethal Lib he just missed that
huh I thought the mention of the LethalLib template meant that he was using that still
@broken crescent if meltdown is installed this patch breaks the apparatus tooltip lol
istg this thread used to be called generalimprovements without the space
more specifically, i set grabbable to false to stop players from grabbing it but also crucially set the custom grab tooltip.
this issue has the code excerpt where i do it
https://github.com/LoafOrc/FacilityMeltdown/issues/46
Updated 7 hours ago, a lot of threads got the space treatment
the space infection
easier to find when searching the main channel
forum search is hosently so broken
you have better chances doing #1199836228858675330 i bet if you search up # general it wouldn't pop up
im wrong it does
Do we have a solution for this?
[Error : Unity Log] IndexOutOfRangeException: Index was outside the bounds of the array.
Stack trace:
(wrapper dynamic-method) Terminal.DMDTerminal::SetItemSales(Terminal)
(wrapper dynamic-method) StartOfRound.DMDStartOfRound::PassTimeToNextDay(StartOfRound,int)
(wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition.TrampolineStartOfRound::PassTimeToNextDay?841401138(StartOfRound,int)
LethalThings.MonoBehaviours.FatalitiesSign.StartOfRound_PassTimeToNextDay (On.StartOfRound+orig_PassTimeToNextDay orig, StartOfRound self, System.Int32 connectedPlayersOnServer) (at O:/github/LethalThings/LethalThings/MonoBehaviours/FatalitiesSign.cs:34)
(wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition.HookStartOfRound::PassTimeToNextDay?-1442934080(StartOfRound,int)
StartOfRound+<EndOfGame>d__262.MoveNext () (at <255c0877f9414c3aa6f1fe5079ac13f3>:IL_03A2)
UnityEngine.SetupCoroutine.InvokeMoveNext (System.Collections.IEnumerator enumerator, System.IntPtr returnValueAddress) (at <e27997765c1848b09d8073e5d642717a>:IL_0026)
Stuck at the company building
this is not an issue with general improvements
are you using lc gold scrap
Dang it my bad I thought I was in the lethal things thread. But yeah I am
Ah ok great, thanks!
@narrow oriole great news, I just finished a big refactor of the Monitors component, and now the only thing happening in Start() is the initial render of the monitors.
No more lists storing ANYTHING, actions or otherwise.
I have a static API class that should be able to return you anything you need by monitor index as a strongly typed object.
And it all worked on the first try, even with the version of OBC I have ๐ฅณ
If that works for you, I'll release this on GitHub if you want to play with it. I plan on having this be a tech debt release that hopefully doesn't have any noticeable changes for end users
hmm, the property for whether the better monitors are active doesn't seem quite right to me, what if the option is changed after the save is loaded?
also, seems to me that the dictionary should be internal, but obviously that's up to you
That should always return the current value no?
I wasn't sure if internal was just as easily accessed by you, I'll update it
it should return whether I should consider the better monitors meshes and scripts to be active in the currently loaded scene
the getter is fine, I shouldn't need direct access to the dictionary
Well those are only loaded if that value is true anyway
you can modify the value after the code that sets up those monitors is run
that's the reason why me just directly accessing that option isn't exactly ideal
Hm I think I see what you mean. I may just change it to => AllMonitors.Count > 0 then lol, that should be a direct indication as well
Although that seems moot
yeah that seems reasonable
well, I'd rather not base my code on something that is essentially an internal implementation detail
it's not immediately obvious looking at that code whether the dictionary will always remain a non-null empty dictionary when the monitors are inactive
after all, you have the null coalescing operator there
Habit, it should never be null in theory.
But it will always be empty if UseBetterMonitors = False
right
I'm just more comfortable with you determining what state indicates inactive status rather than me including a null check and a count check on my end
and if you load into a save with UseBetterMonitors=true, then exit to menu, change UseBetterMonitors=false, will it be empty then?
Yeah it's reset each time monitors are initialized in any way.
And yeah you should be able to just reference NewMonitorMeshActive without doing any of my internal checks ๐๐ผ
You know, I'm changing it to a get; internal set; and I'll just set it during the monitor helper code each time, that seems safer
for the dictionary?
ah I see
whatever works for you, yeah
for OriginalMaterial vs AssignedMaterial, it's not super clear to me what those actually are tbh
AssignedMaterial is the material used when it's powered off?
OriginalMaterial is the material that comes directly from the prefab. AssignedMaterial tries to keep itself updated for toggling power back on, yeah
So it's usually current (updated on Start() and TogglePower)
It should
so it would give me the powered-off material when the monitors' power is off?
that seems risky, then I have to do some fiddling with the hook priority
Ah, no, I use the blank screen material during that part and store what should be used when the power comes back on in AssignedMaterial
So it usually doesn't change much
so AssignedMaterial would be the same material for the duration of the monitor's life?
In theory yeah, the only time it really updates itself is when it detects something overwrote the sharedMaterial (for example your body cam)
Then it would have a reference to your own material
wait but then neither provides what I need, at least not afaik
unless you changed it to modify the material in the prefab to put the cameras' render textures in them?
Well remind me what you need again (sorry lol), I can still adjust
by which I mean, what field in MonitorInfo contains the external camera's material when it is assigned to a monitor screen?
That would be AssignedMaterial unless your cam overwrites it
what I need is:
- If the monitor is assigned a camera by GeneralImprovements, the material that displays that camera
- If the monitor is assigned to display text, the material that displays that text
- If the monitor is assigned to display nothing, null or the background texture depending on whether that is enabled
I don't want it to give me back my own material
at least for my own needs, that would be ideal
given that you currently don't seem to reassign the powered-on material, I could just cache the material at startup, but I'd rather put that ball in your court so you're not limited to one material at startup
Hm I see the need but that's a bit of an odd one. I'd have to store like, a "GIMaterial" or something, and then maybe use "OverwrittenMaterial" instead of AssignedMaterial, and keep GIMaterial to whatever happens internally. Right?
sounds about right, yeah
I'm not sure if the material from the prefab would ever be relevant to an API user, as well
when a camera is assigned, it appears to be pure white
๐๐ผ True I could make that internal. I'll make those changes and let you know when it's available (hopefully in the next couple days depending on if I can hop back on it tomorrow)
yeah, sounds good ๐
the unity template with all the stub scripts that's on the modding wiki's lethallib page, not the plugin itself I meant, my apologies
and yeah like Lunxara said after a few weeks I found out half the scrap I thought I registered wasn't in SpawnableScrap at all, then I tried it myself, found more consistency, and got rid of the dependency
but ironically enough for the shop items I never used LL to begin with ๐
ah, that makes sense
@broken crescent does this option make the clock show inside the facility or only while you're outside? if so i would like to suggest an option to show the clock while in the ship and also while dead
Could the HUD like "refresh" when you go into orbit or land somewhere new? The lightning icon seems stuck ., .
does anyone here know if theres any mod that can separate voice chat audio and game audio ?
You can change those volumes in settings already
i dont want game volume to affect the proximity voicechat volume :(
and sometimes voicechat individual slider are not reliable
I do need to look at refreshing this, the current method I think just waits for a game event or something that doesn't always happen.
Thanks for making a GitHub issue, I saw this message yesterday but it got lost among everything else ๐ I use your mod (it's one of the very few I actually do lol) and will definitely be fixing this soon!
No suggestions allowed, only praise for The Great Consolidation!
Jk lol yeah go on
add an option for them to play the player out-of-stamina animation when they run out
or maybe something about masked wearing tragedy masks
Oooh I just had another masked realism idea. Is it possible to make the name of the player that a masked enemy is imitating appear over their head to make it as real looking as possible?
other mods can do that
Iโm aware. Iโm asking if he can add it.
I actually would have done that already if I remembered lol, I hide player names so I forgot
this might be a stretch, but maybe like.. a rework to the masked always "look at you mechanic" so that they are less on-point?
anyways what you think of my idears
I actually didn't know masked have stamina I'll have to check that out
ye thats why they stop running
they got a LOT of hidden code that is actually like really f**ing awesome
or maybe smth witht their radar anims?
His enemy AI code is pretty good for as "simple" as it is
sooo whaddya think?
I'll look into it and do it if it's easy enough
sweet
if i have mirage do i have to set this to none ? @broken crescent
I actually haven't tested it but I think it shouldn't conflict no matter what settings you use. But that may be wishful thinking
Do you have a list of mods that are very compatable with your mod? It looks like you collab with other mod makers pretty frequently
Not directly, but usually if someone reports a popular mod having compatibility issues with mine I'll look into it
That config option looks kinda
Weird
Maybe it should be changed a bit
Just From looking at it, i think i have a pretty good idea for it
just multiple options (All, NoMask, CopySuit, CopyCosmetics, CopyAnimations, etc.), that you just type in the box, seperating each option with a comma, kinda like how youโd do with choosing what moons an interior can load on
So for example, if you type โNoMask, Copysuitโ, then it enables those 2 options
If you want none, you can leave the box blank, and if you want all the options without wanting to type it all out, just put โAllโ in
I know it's a bit weird to have one option for each combo but it allows easy integration with LethalConfig since you can just pick from a drop down
Right, forgot about that mod for a sec
@broken crescent I didn't realize that you were going to ship 1.2.6 without the API, that unfortunately means that I have to ditch support for the screen fallback feature with that and previous versions since the fields I was attempting to use changed type
Given that a lot of people use OpenBodyCams and GeneralImprovements together, it means many people won't be able to see that feature function properly
Yeah I just didn't have time for the refactor before that. I should have 1.2.7 ready later though
This option doesn't work with Reserved Item Slots
@narrow oriole tysm for the option to change the External Cam emmissive ๐
Happy to see 2.0.0 release I was surprised to see that when going through the config after doing a regen for the big update lol
Got a good value to change the emissive of the external cam to? I tried copying and pasting the body cam one but it's still a bit brighter lol
I haven't experimented with it much, only hooked up the value
it's tricky, because the posterization filter causes it to lose a lot of detail if you lower it too much
Any thoughts on adding some sort of suit management, maybe similar to toomanysuits? I'd just love an alternative and SuitsTerminal just isn't it (I want the suit rack full of suits)
I'm used to SuitsTerminal at this point
I don't like the empty suit rack, and having to go to the terminal everytime to change suits in a 8 player lobby (more than half my group like to rotate suits frequently) is quite annoying
it has chat commands
the way the game handles the suit rack is kind of messy and in my opinion (of course, shaosil has the final say!) feels sort of out of scope for GI
no offence to x753 but more suits is just like
in general one of my least favorite "staple" mods
it's sort of like circuit bee hives
it'll give you what you want if you can handle it correctly but it's extremely easy to get stung if you use it wrong
@narrow oriole v1.2.7 is public and should be live on Thunderstore soon because /shrug
https://github.com/Shaosil/LethalCompanyMods-GeneralImprovements/releases/tag/v1.2.7
It has the API you've been requesting for a year or two ๐คฃ sorry for the delay
Patch notes for anyone who might care
i will remove meltdown's temp patch then
hey so, incompatibility with reserved flashlights
i have it set to all when it comes to the inverse teleporter
yet when people use it they still drop the reserved tools
Yeah I reported that too earlier, idk if he saw it tho
There may be a github issue with the reserved bug but yeah I have that somewhere in my brain
Hmm, for the internal cam...
You had it set before the game started?
yes
Hum that's weird. I'm assuming you're on the version that just published
on latest yeah
Wonder what I broke
Was also an issue on 1.2.6
Currently having to work through bug reports in my release so it'll take a bit before I can look into this, but I'll let you know if I have any issues
How about the logs when you init the ship, with all the monitor assignments and stuff
I may have broken the OBC on orbit.. will fix as soon as I can
i have no clue
what caused this
or what combination of mods caused this
so im gonna point fingers at everyone and no one
Watch HELL and millions of other Lethal Company videos on Medal, the largest Game Clip Platform.
how so, does turning the monitors off and back on fix it?
@broken crescent LOL
is that supposed to be a camera?
It's a blank display
XD
Instead of showing the proper color it's bright white
New bug with 1.2.7
ah I see
Hmm I wonder if another mod may be removing that object then, since I rely on that object/material existing to copy it to my monitors
It does not, and yeah I see from some other white screens I broke a couple other things. Well at least the code is simpler now lol
Well OBC has an option to disable it, idk if that could be it
that option doesn't do anything if it's disabled, and it also doesn't do anything if the better monitors object is found, which should both be true for you I believe
just had the obc/external camera screen randomly switch to white while I was watching a radar booster 
I think the ShowBackgroundonAllScreens option is bugged atm
So the blank screens turn white
I had to disable it
My poor eyes lol
Is there even a point on having that option on if you have something on all monitors?
I had monitor 13 blank
for performance
weird
my extra monitors no longer appear at all
gonna try deleting the configs and regening them tho
soo I probably should have left this release on GitHub. My tests all passed but it seems broken in some other weird ways. I'd recommend just staying on 1.2.6 until I get it sorted
okee
i think it might actually have been LethalPipeRemoval, it also updated today
i think thats the new ghost codes
The infinite body collection glitch is not one of the features of Ghostcodes I dont believe
oh i thought those flickering lights and door opening and close
the lights and doors are caused by ghostcodes
the 2 issues i did have bug wise
was
the body being infinitely collected by the teleporter
can you share profile code? i remember i got that bug before
The only issue I ran into was the blank monitor showing the holy light to me with ShowBackgroundOnAllScreens set to true lol
I'd say 1.2.7 is fine outside of that, I just disabled that option for now
I should try readding ghostCodes, I removed it cus it started throwing errors and stopped working after adding custom moons
I have done extensive work with darmuh to make sure it works 100000% of the time
The most annoying was the reboot command stopped working
I haven't had issues with 1.2.7 besides the holy light monitor if a certain setting is toggled lol
So it should be fine
that
ye mines brok
i have no idea if it's GI or OBC xD
I installed it yesterday, worked just fine, got on today and now it's different
just blancc
maybe some config settings I missed so ima mess with it
Some bloody config option turned on without me knowing :o
I guess bc it was new
but it works
oh, you mean the upgrade? yeah
I suppose it would've been good if I'd added a notification for people that updated it or something
xD it's fine I shouldve checked patch notes. usually I do everytime I update mods
just didnt this time bc stoopid
Ok well it's good to know I didn't completely bork everyone's mod. So far the main two bugs I'm seeing people report are
-
OBC may break after orbit (I probably changed something about how it detects overrides)
-
White screens when showing background on all screens (I think I honestly overlooked that setting when refactoring)
I'll fix it ASAP though, hopefully later today
Hi! I found that last uipdate of General Improvements broke my screens, the internal cameras are now super low quality regardless of my settings, and it broke Helmet Cameras too.
What was the config option?
Hmm I'll look at those
Thank you. I don't know if there was perhaps some new config added in the last two updates that I need to disable for them to work with Helmet Cameras again?
I don't think so, I didn't realize HelmetCams broke because I always use OpenBodyCams since it integrates directly with my mod. But I'll definitely check it out, ideally I don't want to break things lol
Oh! Ill check that mod out. I just used Helmet Cameras for ages
Same! But yeah @narrow oriole has put some really good effort into the stability of that mod
If it doesn't work for any reason it's usually on my end lol
Helmet Cameras havent been updated for 5 months, so it might just be old and thats why. Ill try out OpenBodyCams intead, and see how it looks.
I maaay have broken OBC when the ship orbits in my latest update but I'll fix that soon
So switched to OBC so the cams now work, yipee! The resulution is still terrible on it though, and I got it on 4 multiplier
I think the resolution for OBC is probably controlled via their config, not mine
Ah! Ill look into it, thanks ^^ Forgive me for being so stupid, I am definitly not a coder, for sure, lmao

sounds good!
