Removes the parent call from mob/Login
Mothblocks pinged me with a profile of just a hellish amount of move calls
Way too many, like 200000
Started looking into it, got distracted by how expensive macros were
Turns out most of the cost of macros was in the nuke ops summon spawner
So I looked at why, only bit of it that was at all expensive was the login for the cyborgs
Tested on a local, huh that is slow yeah
Looked at the profiler, huh there's that move count again
So anyway, why is login so expensive
Spawned a few cyborgs in, dragged myself into them, nothing
Spawned myself in with sdql magic using the summon spawner, man it really is still there
I guess it has to do with move somehow, try and stick a breakpoint on it, get fucked by the debugger
I notice the hanging comes during the Login parent call
Try again, this time with good breakpoints.
We're trying to move, to (1,1,1), just like the reference says we will https://secure.byond.com/docs/ref/#/mob/proc/Login
But man, it just keeps happening, and we don't actually move
Step through the code, we've got that null loc check in atom/movable/Move
So the move to (1,1,1) isn't working
Here's the exact line from the reference
"If the mob has no location, place it near (1,1,1) if possible"
Keyword is near
Talked to lummox about this behavior, figured it was a bug
It turns out by near, they mean inside that tile's area
It'll keep trying to place you somewhere, in an attempt to effectively cover for shitty login systems, until you succeed in moving
That tile is space. There are 200,000 tiles with the same area as it
OH.
So anyway, we're not calling parent on mob/login anymore. We can do all the work it did that we care about ourselves (IE: Just the statobj set)
And this way we don't need to worry about 4 SECONDS OF OVERTIME WHENEVER SOME POOR FUCK MESSES UP SPAWN ORDER
So yeah, I'm a genius and not at all just malding at the existance of keybind macros, and hopefully another source of stutter bites the dust
Not actually sure how widespread this is, but even if it's just spawn becacons that's pretty banging
dunking a colder than 0 celsius person in the deep fryer causes additional damage
dunking a VERY cold person causes fun stuff
putting a freeze cube in the deep fryer causes !FUN! stuff
About The Pull Request
Paintings can now do stroke painting.
Added painting management panel for admins.
Paintings now display author's character name, year of painting, medium and patron when hung on wall.
You can become new patron by paying more than the previous one.
Added painter's palettes to library vendor. (Sprites by @Mickyan )
Backend changes:
Images are now stored in /data/paintings/images/*.png instead of /data/paintings/[category]/*.png
Old categories are now just tags
Screens & Video
Changelog
cl
add: You can now become patron of your favorite painting by buying sponsorship from Nanotrasen Trust Foundation.
add: Painter's palettes are now available at library vendor.
qol: Can use strokes in paintings now
/cl
* Removes like 50% of the cost of using the ui, it turns out that the storage component is fucking moronic. Likely significantly reduces the overtime of typecacheof
* Reduces the cost of reloading the dummy by ~50%
Turns out just initializing and deleting organs was like half the cost of reloading a default dummy.
It occured to me (Mothblocks) that we don't actually care about any organs we can't see or that don't effect visuals. So almost all of our organ loading can just be skipped.
This saves a significant chunk of cpu time, items next!
Co-authored-by: Seth Scherer <supernovaa41@gmx.com>
Burnt-out flash in-hands update again
- Prevents flashing going through if the flash burns out during the attempt
- Updates name when using the flash in case burnt_out was somehow reverted to 0 to reflect that
About The Pull Request
Creates the framework for two new TGUI input boxes that can be toggled via game prefs.
This does not convert any actual inputs to TGUI
This does not convert any tgui_list_inputs into being toggleable
Example pictures
Input on a hand labeler. This has a MAX_LENGTH set, so it can be invalidated. Cancel always returns null. Enter button submits, if valid.
text input
(OUTDATED) Multiline input on newscaster. Newer version fills the window with a section, like the others
multiline
Sheets from a stack
number input
Why It's Good For The Game
1
So I did...
Much sleeker input boxes
Result should be a in place swap for most occurrences of input
Renders casting as text/num/null obsolete but still doable
Input validation from both sides handled
Prefs toggle if you don't like the look
Changelog
cl
add: TGUI input boxes are on the way! You can find new preferences in the menu. They will be on by default.
/cl
All mirrors now use the same Initialize(), with a var determining which flag to check.
Improves some of the code with better var names and early returns.
Moves pride ruin's mirror to the rest of the mirrors
Removes /curse() proc, replaces it with Pride's mirror just calling parent instead, since it was the only mirror that used it.
Also fixes not being able to change races with the mirror.
* Bags onto coats
* Bags fit onto wintercoats suit slot
* Bags fit onto suits suit storage slot
* Bags fit onto suits suit storage slot
* Adding mirror tray sprite to belt_mirror.dmi
* Bags fit onto suits suit storage slot
* Construction bag fits into hazard vest suit storage slot
* Fixes and hazard vest/explorer suit expansion
* Explorer suit ore bag
* Once again fix
* Even once more fix
* More and more fixes
* We love fixes. I hope its the last one
* Im back here once again. Fix
/obj/machinery/atmospherics/on_construction actually sets the it's arg as piping layer, which is more often than not null. Not sure if it's actually a problem for any of our currently implemented machineries but It annoyed me somewhat while making another PR.
generateMapList started auto filling the config directory ever since the security PR.
fix: Fixed away missions not loading when the config was enabled.
Chaplains can now invoke the rite with nobody on the altar to convert themselves. The bugged functionality of religious tool that let anyone invoke rites allowed chaplains to be converted by others, which became somewhat of a core feature of the sect. In fixing the previous bug the sect lost a somewhat large part of itself, and I think the best solution is to just make it intended
* Optimizes MouseEntered
Moves status_bar_set_text into the interface definition itself. We don't need to use MouseEntered for this
anymore, since lummy added an on-status paramerter to the main window This saves us a little under half our cpu
time
Gets rid of a needless ?. check, caches a datum var access, inlines a text define.
These all lower the cost of MouseEntered to some degree, though to be perfectly honest with you I really think
we should be doing everything on the client side.
The only reason I'm not moving screentext over there too is because there are plans to expand on screentips to
be contextual, which wouldn't be possible. Though now that I think about it maybe that's not even true....
Anyway, I'm doing what I can to not change behavior for now. Really kinda cheesed about this though.
* Some people are saying this (Cleans up the html a bit, tnx mothman)
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Adds a skill tracker app for tablets.
I allowed all tablets to install it, but it is currently not pre-installed by default.
It is only available to tablets, with the conceptual compromise that it requires no extra hardware components, but uses sensors through your hands or something.
Removes every job .tsx file, and moves their necessary data over to the job datums themselves. This lowers the burden of both adding and removing jobs, and allows for jobs to be removed without touching any internal code (I'm specifically doing this for events)
Exactly what it says in the title. Implanters used to drop the BCI they contained when opened up. Now they don't. For good measure I made them drop their contained BCIs when deconstructed as well in case they already did that as a consequence of the BCI being located inside the implanter, which was the cause of the issue in the first place.
Removes the line "and the Radiation Scanner mode lets you see objects contaminated by radiation" from the scanner goggle description.
Scanner goggles can no longer detect radiation as of 0f3c4e51f7, the old examine text was misleading.
Just fixes some spelling for gangs. I also fixed misspellings for "posession" to "possession". Fixed "seperate " to "Separate" Fixed "Cemetary" to "Cemetery"
The PR that updated the codebase to no longer use legacy colors didn't check this specific proc, which is to my knowledge only used by ghosts lightening their hair color. That's it.
Adds a new ui state so that players can access the paicard tgui while it's slotted in their PDA (inside the pda wasn't technically in the user's close inventory).
Adds some documentation for the pAI candidate file
Users now get notifications if they can't save files (guest keys).
pAIs previously had NO on screen indicator of hack progress, so I've given them a progressbar over the door
More visual output for pAIs
More output for edge cases
More documentation
Fixes#63161
As an error recovery point, if the eye somehow gets qdel'd, it is recreated when you try to move to the core.
However, this error recovery doesn't work if the AI eye is qdel'd without being nulled, as create_eye() checks if eyeobj exists (NOT if it's qdel'd).
Of course the real bug is in whatever is qdel'ing the eye, but considering this is an existing error recovery system, it should still work!
About The Pull Request
Sec hailers should've been changed to not have a tint but also to not have eye protection and so pepper immunity.
Why It's Good For The Game
Fix an oversight on the original PR #62947
Changelog
cl
fix: fix an oversight where sec hailer shouldn't have the tint changes, the eye protection and the pepper immunity. All other sec masks (the swat and spacepol) are unchanged
/cl