#General Improvements

1 messages ยท Page 9 of 1

vapid shell
#

someone run me over

#

i mean

#

give me the run down of whats going on with GI + WT

proven moth
#

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

broken crescent
#

Looks like there might be a circular dependency problem with BetaWeatherTweaks.. checking

little spire
#

@vapid shell

#

Don't update to version 1.2.5 basically

#

Keep it at 1.2.4 for now

light girder
little spire
light girder
#

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

little spire
#

But I like betaweathertweaks :<

light girder
#

you don't need to even regen the config

#

it'll save your settings for when compat is fixed

little spire
#

Ooookaaaaaay fiiiiiiine

#

Hmph

broken crescent
#

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

little spire
broken crescent
#

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.

little spire
#

I see

#

Well, good luck guys<3

vapid shell
#

ah

light girder
#

@misty swallow bls fix

hardy fable
#

Is the mask stuff going to conflict with the popular Mirage mod?

proven moth
#

Maybe I should've looked at the pre-release stuff because this update has been a mess for me

light girder
proven moth
#

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

light girder
proven moth
#

I do have it disabled

light girder
#

MinimumStartingMoney is weird, you have to have like at least a value of 0 or 1 for StartingMoneyPerPlayer for it to work

proven moth
#

mmm

#

true that do be a little funky

subtle mulch
#

So does AllowPreGameLeverPullAsClient actually work now?

#

Also is DisplayHiddenRoutesAfterTraveling by Batby not needed with this new update?

misty swallow
#

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

proven moth
#
  • 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
steel lintel
#

@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
languid salmon
#

i'd assume so, i feel dumb for not seeing this option before unless its a new addition

viscid spear
#

Yea it's the same

narrow oriole
#

@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

languid salmon
#

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

cloud gate
#

the one on the monitor

languid salmon
#

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

light girder
#

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

misty swallow
#

also @steel lintel ^^

misty swallow
#

it should be working now

little spire
misty swallow
#

I'll do it properly later, but for now this should work without errors

celest oriole
#

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.

rough salmon
#

what setting is the suit saving under?

#

found it

sly iris
#

suitsaver is not needed anymore on 1.2.5?

broken crescent
misty swallow
#

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 ๐Ÿ˜‡

broken crescent
#

Nice

covert orbit
#

hi is this a terminalformatter problem or GI? ๐Ÿ˜ญ

misty swallow
covert orbit
#

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

misty swallow
#

Risk level? ๐Ÿค”

#

Are you using Lethal quantities?

covert orbit
#

naur

misty swallow
#

hmmm

#

i see that you have AC installed

#

oh god

#

I don't know if that's the cause

covert orbit
#

does everyone else's work?

misty swallow
#

this is the first time I see this issue

covert orbit
#

i see

#

lemme see if disabling ac works

misty swallow
#

Alright

covert orbit
#

nope still shows planettime with ac disabled

misty swallow
#

alright, I'll check it then

#

What's your modpack code?

covert orbit
#

018f4e0b-0f6d-4770-a116-785e0bc05446

#

appreciate the help btw ๐Ÿ’œ

misty swallow
#

oh no, it's working normally for me

#

LECORE? ๐Ÿ˜ณ

covert orbit
#

o i disbaled lategame upgrades n interactive terminal n it works again

misty swallow
#

oh my god i thought it was something different than yesterday

#

CSync 5

misty swallow
covert orbit
#

kk

#

ty!

misty swallow
#

np

#

the thing is: other mods (MonsterPlushies) might not work because they're still targeted for v4

wise citrus
#

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

broken crescent
#

๐Ÿ‘๐Ÿผ good ideas, I'll add it to the backlog

hardy fable
#

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

tropic saddle
#

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

broken crescent
#

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

tropic saddle
#

oh didnt realize that lol

#

thanks

kind turret
#

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.

vapid crag
#

when I download the new update I cannot see the new config options in the config file, anyone know a fix?

cloud gate
#

have u launched the game after updating

vapid crag
grave heron
#

@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.

neat stone
#

hey is rocket launcher ammo supposed to save now?

kind turret
#

That would be lethalthings i think.

neat stone
#

whoops lol youre right

broken crescent
grave heron
sour rain
#

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

sour rain
sour rain
#

unless rounding errors cause it to skip a minute

sour rain
dire ember
#

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?

frail rapids
#

Mirage has all the features GI have related to Maskeds

#

You can disable all of them in GI

dire ember
#

so even with this false - mirage plays nice ('n vice versa- GI plays nice)?

frail rapids
#

They should yeah

dire ember
#

๐Ÿ‘Œ

light girder
#

@broken crescent So bug with the teleporter, it only auto collects the first person teleported per round instead of all of them lol

sour rain
#

oh so that's why it was so inconsistent for me

broken crescent
tropic saddle
#

does the undoing of hidden moons also work for modded moons?

queen summit
#

Wasn't there an image showing which number corresponds to which monitor? ๐Ÿ˜…

frail rapids
queen summit
#

I think mods should pin that already ๐Ÿ˜…

broken crescent
#

I swear I'll add a reference image or two to the wiki soon.. lol

tropic saddle
#

like can u unhide modded moons like cosmocos and starlancerzero

slate lynx
broken crescent
#

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

tropic saddle
#

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

sour rain
#

terminalformatter probably changes the node

#

due to the setup of terminalnodes multiple mods changing the moon catalog are probably incompatible

tropic saddle
frail rapids
#

My bad I got confused with the other convo lmao

formal oyster
#

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

frail rapids
formal oyster
#

I did it, but it didn't work

frail rapids
formal oyster
#

oh, in lethal level loader, ok, I will try it

frail rapids
#

I mean the terminal command should still work

formal oyster
frail rapids
#

you need to be on the moon catalogue when you type that I'm pretty sure

formal oyster
#

I know, but it didn't work, I tried in the previous version (1.2.4) and it worked

tropic saddle
frail rapids
tropic saddle
#

noice

broken crescent
frail rapids
broken crescent
#

Remind me what's broke about it?

frail rapids
#

Bottom part is cut off

broken crescent
#

Ah without better monitors, right. Let me make sure to do that next

broken crescent
sour rain
#

for what it's worth

light girder
#

XD

sour rain
#

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

broken crescent
#

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 ๐Ÿ˜„

sour rain
#

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

broken crescent
#

There we go

rough salmon
#

~~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

broken crescent
rough salmon
#

:D

rough salmon
#

love the scan players option

#

is there only "healthy" and "injured?"

broken crescent
#

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";

rough salmon
#

radiant?

broken crescent
#

> 100% shouldn't happen but: Radiant

= 75%: Healthy

= 50%: Injured

= 25%: Badly Injured

> 0%: Near Death

<= 0%: Deceased

rough salmon
#

i see radiant is prob possible with items that will heal you over the 100% limit

broken crescent
#

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%

rough salmon
#

o ok

light girder
#

@broken crescent the 2 is falling

narrow oriole
#

@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?

narrow oriole
broken crescent
broken crescent
narrow oriole
#

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

broken crescent
#

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

broken crescent
#

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

narrow oriole
#

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

broken crescent
#

๐Ÿซ 

narrow oriole
#

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

light girder
#

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

narrow oriole
#

it probably doesn't recursively check for new components to call Start() on

light girder
#

However powering the monitors down and back on

#

fixes it

narrow oriole
light girder
#

018f5609-7204-6f21-8192-2b8b3649998d

light girder
#

My pack if he needs it

narrow oriole
#

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

light girder
#

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

narrow oriole
#

gotcha

light girder
#

Ye

narrow oriole
#

(you can make it blue if you want it to match the other monitors though)

light girder
#

I used that for performance reasons but dunno if it's needed since I disabled the other cams

narrow oriole
#

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

light girder
#

It does the ship performs smoother when not having the InternalCam set to anything

narrow oriole
#

(an oversight on my part)

#

oh I see

#

good

narrow oriole
#

@light girder is this what you meant by bright green?

light girder
narrow oriole
#

ah yeah, after landing and taking off I got the darker screen

light girder
#

Yeah I used the darker green to match the main monitor display lol

narrow oriole
#

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

light girder
#

It almost looks like it refreshes the screens after going back in orbit

#

That's all I can guess

narrow oriole
#

it's definitely possible, I haven't found the code that does it though

broken crescent
#

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

narrow oriole
#

do you mean you replicated the screen being the darker desaturated green?

#

it should not look like my screenshot above to be clear

broken crescent
#

Yeah, instead of showing the body cam

narrow oriole
#

the body cam isn't visible by default since it's set to disable when its target is on the ship

broken crescent
#

Oh

#

Welp

#

one sec

narrow oriole
#

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

broken crescent
#

gotcha

#

that explains the exchange above lol

narrow oriole
#

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

broken crescent
#

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

narrow oriole
#

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

broken crescent
#

Yep, ideally no bandaids

narrow oriole
#

are the monitors marked as transparent surfaces? thonk

#

this sorting looks kinda funky

broken crescent
#

I never checked, I'm just copying the existing canvases and such for the old style. It does look a bit odd

broken crescent
#

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

light girder
#

Big Red Boi is our protector

broken crescent
#

@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?

narrow oriole
#

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

broken crescent
#

For example?

narrow oriole
#

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

broken crescent
#

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?

narrow oriole
#

my understanding is that that list isn't populated in Monitors until Start() is called?

#

but if it was, yeah, that's be fine

broken crescent
#

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

narrow oriole
#

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

broken crescent
#

I may be able to return whatever material is associated with that index

narrow oriole
#

would be nice for that to work as well, but the main thing I was thinking about is the cameras

broken crescent
#

Whether it's TMP/cam based or pure material

#

I'll fiddle with it

narrow oriole
#

sounds good to me I think

broken crescent
#

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

narrow oriole
#

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?

broken crescent
#

Using reflection? You could, yeah. I've been making changes but I don't think I've affected those two fields

narrow oriole
#

using publicizer more like, but yeah

#

will try it out then

rough salmon
broken crescent
#

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

rough salmon
neon quarry
broken crescent
formal oyster
#

Sure, I will pass it later, rn I'm travelling

narrow oriole
#

haven't tested text yet though

#

I had to rework some stuff for camera culling first

broken crescent
#

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

sour rain
#

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

narrow oriole
#

I wonder if it should use point sampling on the render texture

#

aspect ratio is off too though

broken crescent
broken crescent
#

Completely untested ๐Ÿ˜…

narrow oriole
#

yeah, I guess I didn't realize that only the text materials were already present in that list

prime mulch
#

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

broken crescent
#

Do you use OpenBodyCams? We have fixes coming for that soon

narrow oriole
#

looks too bright to be OpenBodyCams to me Hmm

prime mulch
#

Yes I swapped from HelmetCams or something like that to OpenBodyCams because someone told it is better atm

narrow oriole
#

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

prime mulch
#

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

narrow oriole
#

interesting, would you mind sending your GI config so I can check it out?

prime mulch
#

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

narrow oriole
#

actually, I suppose maybe you just have your gamma cranked up

prime mulch
narrow oriole
#

don't worry about that, I'm guessing it's the gamma

prime mulch
narrow oriole
#

it might just look weird on my screen

prime mulch
#

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

broken crescent
#

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

narrow oriole
#

should be possible to test in LAN right?

broken crescent
#

I think so

narrow oriole
#

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

prime mulch
#

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

narrow oriole
narrow oriole
#

the body cam should show up after switching the screens off and back on, though, I believe

prime mulch
#

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?

narrow oriole
#

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

prime mulch
#

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

narrow oriole
#

@broken crescent uuuuh why don't you use one harmony instance shock

#

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 SadgeCry

#

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

broken crescent
broken crescent
#

So I'm not even sure what you mean by using the guid as a harmony ID, I thought I was

narrow oriole
#

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

broken crescent
#

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

narrow oriole
#

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

broken crescent
#

Cool ok, if it's not a huge refactor I'll try to have that in the next update

narrow oriole
#

it should be a find and replace

#

I'll have to stick with HarmonyPriority for now though

broken crescent
#

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

narrow oriole
#

yeah, I was also surprised to find out how easy it is

broken crescent
#

Of course it helps to have poked around in Unity over the years too so I had a basic understanding of the script flows

narrow oriole
#

I don't know anything about how Unreal does it, but I suppose they might compile their scripts differently since they have visual scripting

broken crescent
#

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

narrow oriole
#

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

broken crescent
#

Haha yeah

narrow oriole
#

they have a half-baked culling API that doesn't even do anything yet in the SRP lol

broken crescent
#

Ew. And yeah you gotta love tracing up a call stack to debug something when you see [Native] or whatever it is

narrow oriole
#

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

broken crescent
#

Yup. That stuff is not only difficult to debug but simply boring

narrow oriole
#

when I was profiling culling, about 25% of the time was spent getting the camera position

broken crescent
#

Interesting

narrow oriole
#

all because it had to run through the transform chain to apply all the matrices

#

(and perhaps also calculate the projection matrices)

sour rain
#

in fairness lethal company is a mono game

#

if a game is compiled with il2cpp it becomes a lot more of a disaster

broken crescent
#

Sure. Luckily a lot of devs use Mono

sour rain
#

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

broken crescent
#

Right..

sour rain
#

or the past few years, really, but especially the last few months

neon quarry
formal oyster
#

I passed the code yesterday, in dm, but maybe he needs to test more, so it's fine ๐Ÿ˜

neon quarry
#

Ohhh ๐Ÿค 

broken crescent
#

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

misty swallow
#

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

broken crescent
#

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

misty swallow
#

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 ๐Ÿ˜‚

broken crescent
#

lol

misty swallow
#

i know that HellWeather did some enum trickery to inject its weather type

#

but it wasn't working for me before

broken crescent
#

@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

misty swallow
formal oyster
neon quarry
broken crescent
#

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

neon quarry
broken crescent
#

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.

broken crescent
#

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

GitHub

v1.2.6 - More fixes and improvements

Added an option to use better monitors without adding the extra left hand group of monitors. Defaults to false (uses extra monitors by default if UseBetterMoni...

proven moth
#

Does the monitor change mean the left monitors will only be visible if there's something on them?

broken crescent
#

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

proven moth
#

ic

#

Just processed that the option completely replaces the models of the vanilla monitors oop

versed path
#

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 ๐Ÿ‘

narrow oriole
#

I'll test it out in a bit, but I'm not sure exactly how these will interact now

broken crescent
narrow oriole
#

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)

frail rapids
#

Not sure I understand what BetterMonitor do

#

I thought it only added the extras on the left

narrow oriole
#

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

broken crescent
broken crescent
frail rapids
#

Oooh

#

Text floating on top of the screen is something that bothered me in vanilla

narrow oriole
#

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

broken crescent
#

I'll see what I can do

narrow oriole
#

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;
        }
broken crescent
#

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.

narrow oriole
#

would that exist before Monitors.Start() though? that's what made this necessary initially

#

or maybe I'm misunderstanding what you mean

broken crescent
#

Well technically the materials aren't populated until Start() anyway

narrow oriole
#

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

broken crescent
#

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

narrow oriole
#

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

broken crescent
#

Hmm ok maybe I need to refactor that and see if the Start() stuff is really necessary

narrow oriole
#

I would have to imagine it's not but maybe there was some niche issue with it

broken crescent
#

I'll plan on doing that next

narrow oriole
#

yeah, definitely not the priority since as long as I have that API I won't have to interact with that anymore

broken crescent
#

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

narrow oriole
#

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

broken crescent
#

๐Ÿ˜‚ 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

neon quarry
frail rapids
#

So they always are at the same position no matter the save

broken crescent
#

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

ebon nest
#

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

broken crescent
#

Yeah that's in my backlog somewhere haha

#

The Great Consolidation

light girder
#

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

broken crescent
#

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

light girder
#

Unless of course the enum is already compatible lol

light girder
#

@proper quarry if you want maybe you can check if it's compatible ;o

rough salmon
#

i see the update

grave heron
#

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

broken crescent
rough salmon
#

just got ejected and got suprised for a second because my furniture stayed in its position
until i realized it was this mod :D

drifting quail
#

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

grave heron
broken crescent
drifting quail
#

I had this yesterday so not sure if that was 1.2.6

rough salmon
#

its working for me

#

does the lightning indicator not work for reserved slots?

broken crescent
#

I don't think it does, I keep meaning to fix that

rough salmon
#

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

broken crescent
#

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?

rough salmon
#

by the time they let me go it was too late to do anything

broken crescent
#

Oh that's cute

#

Haha I'll look into it

rough salmon
#

i hate these guys now

#

also i kinda like the new random day 1 seed i got a seed where shovels were 80% off

broken crescent
#

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

rough salmon
#

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)

broken crescent
#

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

rough salmon
#

):
i guess closing the game and opening is he only thing thats possible

magic roost
#

This has now been fixed by default in the latest release v1.5.13+

queen summit
#

Are you also planning on adding a walkie use keybind?

Asking since there's the flashlight keybind in the config ๐Ÿค”

broken crescent
broken crescent
queen summit
grave heron
#

018f6301-eab7-4228-4959-5998efa81630 (I updated it)

#

I hope you don't mind the translation

proper quarry
#

since mirage doesnt do any of those changes itself

misty swallow
broken crescent
vapid shell
misty swallow
#

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 ๐Ÿ˜†

elfin thistle
#

hey Shaosil. i have encountered a few minor problems with your mod.
have a look

rough salmon
#

would be cool if instead of dead it shows up as Unknown

#

since there seems to be no records of the masked anywhere

elfin thistle
#

i don't hate the "deceased" honestly

#

it's pretty creepy

#

but for what i have seen it shouldn't look like this

broken crescent
# elfin thistle hey Shaosil. i have encountered a few minor problems with your mod. have a look

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 ๐Ÿ‘๐Ÿผ

vapid shell
#

I thought you added compat to unknown weathers by having ?????? Show up

light girder
#

Lmfaooooo

vapid shell
#

Oh

#

Time for my favorite time of day

#

@misty swallow

#

MROVVVVVV

broken crescent
#

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

light girder
#

"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"

misty swallow
#

but for the animation? i honestly don't know ๐Ÿ˜›

misty swallow
frail rapids
#

Sometimes you can see it sometimes you cant

broken crescent
#

Oh? That may be the missing piece then

#

I assumed WeatherTweaks = Unknown Weather

light girder
#

lol

frail rapids
#

No lol thats just a part of it

misty swallow
light girder
#

Ah yes Mrov keep posting and insta deleting your messages

#

lol

frail rapids
#

I saw that too haha

misty swallow
#

but yeah, when the underlying true weather is just shown it's breaking the immersion a bit ๐Ÿ˜‡

#

wrong thing in the clipboard, sorry

broken crescent
#

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

light girder
#

Man's running off a script with his responses now

#

Too much Stanley Parable @misty swallow

broken crescent
#

I'll make a note to have my monitors work better with WeatherTweaks soon

narrow oriole
#

@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

broken crescent
#

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

narrow oriole
#

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

vague blaze
#

General Improvements

sage hatch
#

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?

broken crescent
#

Supporting ReservedItemCore is on my to-do list โ˜บ๏ธ

sage hatch
#

alright :)

light girder
#

@broken crescent bls fix this shit

#

it makes the game not progress

#

Lol

broken crescent
#

That looks like a LobbyControl or LethalThings error - it just happens to come after one of my logs

light girder
#

I wanna know how to fix it lol, drives me nuts

#

XD

subtle mulch
#

LethalThings always had issues with sales for me

broken crescent
#

Easiest fix is disable those mods ๐Ÿคฃ

light girder
#

I've had that error even without LT

broken crescent
#

I've never seen it before tbh

light girder
#

So it's probably LobbyControl

sage hatch
#

really?

light girder
#

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

sage hatch
#

i've never had that issue and I use LobbyControl and GI

short frost
#

its mainly an LL + combination of mods that try to display discount stuff afaik

warm pivot
#

also wanted to ask, am i gonna be fine if i set the new masked thingy setting to none and just use mirage?

narrow oriole
#

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

short frost
light girder
#

This issue got worse after the update for @north pagoda's LCGoldScrapMod update

narrow oriole
#

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

short frost
light girder
#

Well Simon confirmed he immediately reproduced the issue with only his mod and GI

sour rain
#

that still implies "conflict" more than "generalimprovements is broken"

#

to be clear

light girder
#

Yeah

sour rain
#

Terminal.SetItemSales is a vanilla method

light girder
#

Simon is trying to fix it

sour rain
#

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

light girder
#

Yeah something with the mod is causing that vanilla method to break

#

Which isn't a GI issue

north pagoda
#

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

sour rain
#

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

light girder
sour rain
#

any time items go on sale it is probably breaking your mod

light girder
#

Yeah

north pagoda
#

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

sour rain
#

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

north pagoda
sour rain
#

it only gets initialized once, looking at the code, and it needs 1 index for each item in buyableItemsList

#

lol

#

yes

#

there you go

north pagoda
#

yep that must be it

sour rain
#

after you add everything to buyableitemslist you can probably just manually resize

north pagoda
#

oops lol thought that would happen automatically using that lethallib template ๐Ÿ˜ญ

#

haha silly me ssssssssorrryyy

#

yeah that should hopefully be easy

vapid shell
#

Um

#

Quick question

#

GI is the mod that allows you to pick stuff up before the lobby begins right

broken crescent
#

Yeah it can

sour rain
#

that is a feature yes

vapid shell
#

It has selectively stopped working

#

For modded items

sour rain
#

that would make sense

vapid shell
sour rain
#

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

vapid shell
#

used to work before im like 56% sure

broken crescent
#

Hum. Yeah I moved that code to a more logical area and it may be happening before certain other mods init their own items

vapid shell
#

not a huge deal i dont think

broken crescent
#

I can look at decreasing the priority of that part

sour rain
#

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

broken crescent
#

Well jetpacks should still work

sour rain
#

yes, it's true

broken crescent
#

But not modded items I expect

kind turret
#

Well, TIL that I probably dont need this anymore

vapid shell
sour rain
#

yeah GI does the same thing if you have it

broken crescent
#

The Great Consolidation

kind turret
#

I think i installed GI and that around the same time so I just

#

kept it moving forward as time went on

north pagoda
# north pagoda haha silly me ssssssssorrryyy

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

broken crescent
#

Development in a nutshell

north pagoda
#

this energy

light girder
north pagoda
#

thankyou guys

light girder
# north pagoda thankyou guys

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

north pagoda
#

yeahhhhhh sorry about that ๐Ÿ˜ญ

#

new patch with the fix just uploaded

light girder
#

It's all good, things happen lol

north pagoda
#

and i swear this mod will haunt me in my dreams lmao

broken crescent
#

How dare your code have bugs ๐Ÿ˜›

north pagoda
#

I would never I am perfect I breathe ram barrPERCEIVE

broken crescent
#

I don't even see the zeros and ones anymore. I just see blonde, brunette, redhead...

north pagoda
#

I just see dark spots

#

or... maybe I should turn off my computer and get sleep

#

nahhhh

narrow oriole
#

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

light girder
#

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

narrow oriole
#

thonk huh I thought the mention of the LethalLib template meant that he was using that still

vapid acorn
#

@broken crescent if meltdown is installed this patch breaks the apparatus tooltip lol

rough salmon
#

istg this thread used to be called generalimprovements without the space

vapid acorn
kind turret
rough salmon
#

the space infection

proven moth
#

easier to find when searching the main channel

rough salmon
#

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

neat stone
#

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

sour rain
#

are you using lc gold scrap

neat stone
#

Dang it my bad I thought I was in the lethal things thread. But yeah I am

sour rain
#

there is a bug in that mod that breaks terminal.setitemsales

#

it will be fixed

neat stone
#

Ah ok great, thanks!

broken crescent
#

@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

narrow oriole
#

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

broken crescent
#

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

narrow oriole
#

it should return whether I should consider the better monitors meshes and scripts to be active in the currently loaded scene

narrow oriole
broken crescent
#

Well those are only loaded if that value is true anyway

narrow oriole
#

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

broken crescent
#

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

narrow oriole
#

yeah that seems reasonable

broken crescent
#

Ah well it makes sense once it's internal

#

Ok yeah

narrow oriole
#

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

broken crescent
#

Habit, it should never be null in theory.

But it will always be empty if UseBetterMonitors = False

narrow oriole
#

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?

broken crescent
#

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 ๐Ÿ‘๐Ÿผ

narrow oriole
#

NODDERS sounds good!

#

oh wait

broken crescent
#

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

narrow oriole
#

for the dictionary?

broken crescent
#

NewMonitorMeshActive

#

Instead of checking the count and all that

narrow oriole
#

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?

broken crescent
#

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)

narrow oriole
#

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

broken crescent
#

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

narrow oriole
#

so AssignedMaterial would be the same material for the duration of the monitor's life?

broken crescent
#

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

narrow oriole
#

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?

broken crescent
#

Well remind me what you need again (sorry lol), I can still adjust

narrow oriole
#

by which I mean, what field in MonitorInfo contains the external camera's material when it is assigned to a monitor screen?

broken crescent
#

That would be AssignedMaterial unless your cam overwrites it

narrow oriole
#

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

broken crescent
#

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?

narrow oriole
#

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

broken crescent
#

๐Ÿ‘Œ๐Ÿผ 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)

narrow oriole
#

yeah, sounds good ๐Ÿ‘

north pagoda
north pagoda
#

but ironically enough for the shop items I never used LL to begin with ๐Ÿ™ƒ

narrow oriole
#

ah, that makes sense

frigid bramble
#

@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

dire ember
#

Could the HUD like "refresh" when you go into orbit or land somewhere new? The lightning icon seems stuck ., .

cloud gate
#

does anyone here know if theres any mod that can separate voice chat audio and game audio ?

drifting quail
#

You can change those volumes in settings already

cloud gate
#

i dont want game volume to affect the proximity voicechat volume :(
and sometimes voicechat individual slider are not reliable

broken crescent
broken crescent
low gyro
#

i have a suggestion

#

you know how masked have a stamina system?

broken crescent
#

No suggestions allowed, only praise for The Great Consolidation!

Jk lol yeah go on

low gyro
low gyro
grave heron
#

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?

grave heron
broken crescent
low gyro
#

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?

low gyro
broken crescent
low gyro
#

they got a LOT of hidden code that is actually like really f**ing awesome

#

or maybe smth witht their radar anims?

broken crescent
#

His enemy AI code is pretty good for as "simple" as it is

low gyro
#

sooo whaddya think?

broken crescent
#

I'll look into it and do it if it's easy enough

low gyro
#

sweet

cloud gate
#

if i have mirage do i have to set this to none ? @broken crescent

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

shell bridge
#

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

broken crescent
#

Not directly, but usually if someone reports a popular mod having compatibility issues with mine I'll look into it

fleet thistle
#

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

broken crescent
#

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

fleet thistle
#

Right, forgot about that mod for a sec

narrow oriole
#

@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

broken crescent
#

Yeah I just didn't have time for the refactor before that. I should have 1.2.7 ready later though

frail rapids
#

This option doesn't work with Reserved Item Slots

light girder
#

@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

narrow oriole
#

np! hopefully everything is stable

#

lots of changes

light girder
narrow oriole
#

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

subtle mulch
#

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)

light girder
#

I'm used to SuitsTerminal at this point

subtle mulch
warm pivot
#

it has chat commands

sour rain
#

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

warm pivot
#

me when i rejoin the game and see the suit rack full of orange suits

sour rain
#

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

vapid shell
#

Holy FUCKING SHIT

#

MY GAME IS MELTING

broken crescent
#

@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

GitHub

v1.2.7 - Refactor and compatibility

Refactored how the better monitors get initialized, since the code complexity had slowly been increasing with each update. There should be no noticeable changes...

broken crescent
#

Patch notes for anyone who might care

vapid acorn
#

i will remove meltdown's temp patch then

broken crescent
#

And yeah I included your compat fix @vapid acorn

#

Also happycat rules

frail rapids
#

I can't get the Internal Camera to show up on the monitor @broken crescent

rotund elm
#

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

frail rapids
#

Yeah I reported that too earlier, idk if he saw it tho

broken crescent
#

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?

frail rapids
#

yes

broken crescent
#

Hum that's weird. I'm assuming you're on the version that just published

frail rapids
#

on latest yeah

broken crescent
#

Wonder what I broke

frail rapids
#

Was also an issue on 1.2.6

broken crescent
#

(works on my machine :P)

#

Ah ok, any logs?

frail rapids
#

I don't think there were any errors but I can still send it

narrow oriole
broken crescent
#

I may have broken the OBC on orbit.. will fix as soon as I can

vapid shell
#

i have no clue

#

what caused this

#

or what combination of mods caused this

#

so im gonna point fingers at everyone and no one

narrow oriole
light girder
#

@broken crescent LOL

narrow oriole
#

is that supposed to be a camera?

light girder
#

It's a blank display

#

XD

#

Instead of showing the proper color it's bright white

#

New bug with 1.2.7

narrow oriole
#

ah I see

broken crescent
#

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

broken crescent
frail rapids
#

Well OBC has an option to disable it, idk if that could be it

narrow oriole
#

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 thonk

light girder
#

So the blank screens turn white

#

I had to disable it

#

My poor eyes lol

frail rapids
#

Is there even a point on having that option on if you have something on all monitors?

light girder
#

for performance

narrow oriole
#

weird

arctic zinc
#

my extra monitors no longer appear at all

#

gonna try deleting the configs and regening them tho

broken crescent
#

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

arctic zinc
#

okee

arctic zinc
#

i think it might actually have been LethalPipeRemoval, it also updated today

narrow oriole
#

would not surprise me

#

that mod destroys random stuff onboard the ship

mossy mortar
vapid shell
#

The infinite body collection glitch is not one of the features of Ghostcodes I dont believe

arctic zinc
#

not even that one... idk what mod did it

#

my beautiful terminals are gone... ๐Ÿ˜ข

mossy mortar
vapid shell
#

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

mossy mortar
#

can you share profile code? i remember i got that bug before

light girder
#

I'd say 1.2.7 is fine outside of that, I just disabled that option for now

light girder
vapid shell
light girder
vapid shell
#

Um

#

is GI

#

healthy and stable?

#

to update

light girder
#

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

dusky stirrup
#

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

narrow oriole
#

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

dusky stirrup
#

xD it's fine I shouldve checked patch notes. usually I do everytime I update mods

#

just didnt this time bc stoopid

broken crescent
#

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

silver jetty
#

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.

silver jetty
silver jetty
broken crescent
#

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

silver jetty
#

Oh! Ill check that mod out. I just used Helmet Cameras for ages

broken crescent
#

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

silver jetty
#

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.

broken crescent
#

I maaay have broken OBC when the ship orbits in my latest update but I'll fix that soon

silver jetty
#

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

broken crescent
#

I think the resolution for OBC is probably controlled via their config, not mine

silver jetty
#

Ah! Ill look into it, thanks ^^ Forgive me for being so stupid, I am definitly not a coder, for sure, lmao