* Fixes voice of god runtime when a target resists the command (#69921)
* Fixes voice of god runtime when a target resisted your command and adds a grep to avoid it being a problem again in the future.
* Fixes voice of god runtime when a target resists the command
Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
* Save 2.2s minimum (with zero ruins, likely a good bit more in production) of atom init time (#69564)
Pre-sort smoothing_groups and canSmoothWith
Without any ruins, these sorts were taking more than 0.6s, and the bulk of the runtime cost of sortTim during init time.
This only happens on init and they are never changed apart from that, so pre-sorts everything and adds a unit test (in the form of #ifdef UNIT_TESTS, because you can't initial a list) to ensure that they are proper.
Keep visibilityChanged() to mapload only for turf/Initialize
Saves about 0.4s worst case scenario (e.g. with no ruins). Very expensive code (175k loop iterations) for 0 side effects.
Space areas now have the fullbright overlay, not the space turfs
Saves about 0.8s worst case scenario. Seems to work fine with starlight.
Remove is_station_level check for window spawners assigning RCD memory.
Saves about 0.3s worst case scenario. The logic for this isn't consistent since neither walls nor floors check this (for performance), plus some minor micro-opts to spawners.
Optimize is_station_level
Doubles in speed, used heavily in /turf/open/floor and in other initialization procs. Bit hard to tell exactly how much is saved, though.
* Save 2.2s minimum (with zero ruins, likely a good bit more in production) of atom init time
* Hopefully fixes the broken CI
* Okay now it shouldn't be failing CI anymore (hopefully)
* Fixes even more issues with smoothing_groups, this time hopefully for good
* Okay NOW it's going to pass CI, surely...
* Okay haha what if it passes this time? :)
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
* Removing trailing / from several mapping regexes (#69448)
* Removing trailing / from several mapping check regexes
So we have check_grep.sh which helpfully checks for a bunch of common map mistakes, including doubled up items. This adjusts them to capture doubled up base types which might be mapped in.
* Commit before pushing next time
* Removing trailing / from several mapping regexes
* Commit
Co-authored-by: Vire <66576896+Maurukas@users.noreply.github.com>
Co-authored-by: John Doe <gamingskeleton3@gmail.com>
* adds structure spawners for electrified grilles, adds greps for some fulltile window spawners (#69528)
* adds structure spawner for electrified grilles
* sdmm key cleanup
* adds structure spawners for electrified grilles, adds greps for some fulltile window spawners
* should fix blueshift lints lets see
* should resolve most if not all of the others
* damn you skyrat map reset
Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
Co-authored-by: Paxilmaniac <paxilmaniac@gmail.com>
* Police hats are now hats instead of helmets. (#69643)
* Fixes police hats covering your hair.
Makes police hats a subtype of Warden's hats, so they still are security-level armor, without covering your hair like helmets do.
This was gone unnoticed because the item is very limited in-game.
I also renamed the gravity generator updatepaths because it's been inconsistent with the rest of the updatepaths for a while now.
* renames updatepaths
* Update tools/UpdatePaths/Scripts/69643_police_hat.txt
Co-authored-by: san7890 <the@ san7890.com>
* moves the hat to warden's, removes icon state
Turns out the icon state is shared between both hats, so the only real difference is name and description...
Co-authored-by: san7890 <the@ san7890.com>
* Police hats are now hats instead of helmets.
* Update head.dm
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
* [MDB IGNORE] APC controller and Power Monitor/AmpCheck fixes, aka How do I write PR titles (#69146)
About The Pull Request
bgug fix stuff
APC controller UI has its elements section'ed off. The backend has been redone to make the behaviour of the APC controller a bit less janky. The console should be more stable, and all the soul has been removed from the code and the UI.
before this PR stales out from nobody wanting to review my pr, I should probably outline what exactly changed:
APC controller consoles have had their APC code almost entirely reworked. They no longer have to hold a reference to the person using the controller currently, and APCs themselves no longer hold a reference to the controller, instead to the person directly. A lot of code was moved to APC themselves to make it a lot more stable.
APC controller used to call toggle_breaker without passing args, causing a runtime. Fixed in
Fixes the power flow control console not actually being able to toggle breakers #69343
APC controller UI has had the Window.Content tags moved up to the top component, and a lot has been sectioned off to make the UI more sane.
AmpCheck used to look for a wire on it's turf, or as a fallback look for the Area APC. A check to see if the APC has a terminal did so on a weakref, causing a runtime and preventing the program from ever finding a valid APC in it's area, making it show nothing. This has been fixed. On the other hand, the power monitor console did not store the ground wire or APC terminal as a weakref, this has been updated. As a fallback, if there are still no APCs in the powernet, the UI will show a dimmer popup.
There was a "secret" power monitor variation in code so PDAs could not access monitors in hidden places. With the removal of PDAs, this control console is useless.
Why It's Good For The Game
Tiny bit of (much needed) polish on some useful tools in the engineering department.
Changelog
cl
fix: Fixed runtime when using AmpCheck without connecting the console with a wire.
fix: Fixed a few runtimes that could occur when using APC controller consoles.
qol: Sucked soul out of APC controller code and UI.
del: Removed "secret" power monitor console.
/cl
* [MDB IGNORE] APC controller and Power Monitor/AmpCheck fixes, aka How do I write PR titles
* update paths
Co-authored-by: distributivgesetz <distributivgesetz93@gmail.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
* Improve validation script annotations (#69553)
We now correctly calculate the offset into the DME file by comparing
total lines in vs lines stored.
Note this will fail if you ever skip lines in the middle of the file
We also show the expected line instead
* Improve validation script annotations
Co-authored-by: oranges <email@oranges.net.nz>
* Merges ordnance data disks (#68376)
JohnFulpWillard
Member
JohnFulpWillard commented 23 days ago
About The Pull Request
Merges ordnance data disk and frontier data disk, since the ordnance data disk's description says it is for ordnance-related stuff, yet doesnt have the main app people need to do Ordnance, which I found weird.
I additionally moved the NT Frontier app to the rest of the programs folder, and renamed it Frontier so it is easier to find.
Why It's Good For The Game
This allows the semi-public ordnance data disk (as they are found in vending machines) to actually contain the ordnance app it claims it provides, making it easier for an Atmospherics Technician (or anyone, really) to get the app needed to upload gasses they make, as experiments for their nodes.
This makes it easier for Engineering to do Engineering-related experiments to get Engineering-related tech nodes, much like Medical can by doing Dissection surgeries, while also giving more use to the Frontier's ability to put authors, since now Science and Atmospherics can see eachother completing experiments and maybe even try to outdo the other.
Changelog
cl
balance: Ordnance data disks now have the Frontier app on them, and has entirely replaced Frontier data disks.
/cl
* Merges ordnance data disks
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* The GAGening: Clothesmate edition
* ThisShouldWork
* hgnbhg
* would probably help to have the right .dmi
* fixed?
* Fuck you
Co-authored-by: Twaticus <46540570+Twaticus@users.noreply.github.com>
Update Python required versions
All of these versions are very old. I'm specifically updating pygit2 to
a version that works with a non-ancient libgit2 (i.e. one you can find
and install), and bidict so that it will work with Python 3.10 (it's had
a bunch of performance improvements, so mind as well go to the latest
version.)
Co-authored-by: David Walker <d0sboots@gmail.com>
* Removes Goon from Build.js (#68679)
* Removes Goon from Build.js
Hey there,
This folder doesn't exist any more on the repository, so we should probably drop it since it is no longer relevant to the function of this script.
I assume my changing of nearly every line in this file is related to Prettier running on the Javascript.
* Revert "Removes Goon from Build.js"
This reverts commit 1c5ab76fa9bbb1474a6ad615eef1bea27091f323.
* Does it without Prettier
* Removes Goon from Build.js
Co-authored-by: san7890 <the@san7890.com>
* Merge Conflict Markers Proper Variable Addition (#68536)
Hey there,
I fucked up. I used a comma when I should have used a semicolon. I think I did change it back after a test case but I probably forgot to save, skull emoji. Should be all good now.
* Merge Conflict Markers Proper Variable Addition
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Funce <funce.973@gmail.com>
* Renamed Balance/Rebalance to Balance, and removes unused rebalance tag (#68485)
* Renamed Balance/Rebalance to Balance, and removes unused rebalance tag
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
* Updates the UpdatePaths Readme to have more information (#68436)
Updates the UpdatePaths Readme to have more information
Hey there,
Several people were relying on this to teach them about UpdatePaths, and it missed out on a bunch of needed information (such as the important of including `@ OLD` in order to ensure that you do not discard old variables (properties)) when you transfer from an old path to a new path. I added that in, as well as leveraged the capabilities of it being a MD file to get some nicer looking formatting in as well.
* Updates the UpdatePaths Readme to have more information
Co-authored-by: san7890 <the@san7890.com>
* Updates check_grep.sh to have more clarity and contrast (#68387)
* Updates check_grep.sh to have more clarity
Hey there,
One issue with check_grep is that it was very inconsistent in how it handled the error conditions and echos to the end user. Some of them didn't have ERROR:, some of them didn't have two echos to separate them from the actual grep result, etc.
This should add more clarity to all of it by making each error line exit with a RED color, the boilerplate lines with a BLUE color, having an echo in each line to separate, etc. This should be much easier to see for anyone at a glance. This works on my local machine, and I suppose we'll find out how it looks on GitHub.
* Updates check_grep.sh to have more clarity and contrast
Co-authored-by: san7890 <the@san7890.com>
* The lint for whitespace issues now shouts louder (#68386)
* The lint for whitespace issues now shouts louder
Co-authored-by: oranges <email@oranges.net.nz>
* Merge Conflict Markers - The Explicit Pathing, Layering, Iconing, Warning. (#68039)
* Merge Conflict Markers - The Explicit Pathing
Hey there,
This PR corrects an issue I've been having with mapmerge2 these last few months. Basically, what it does is create a base `/obj` that is given the name `---Merge Conflict Marker---`. This is fine and all, but the problem is that the base `/obj` is set to a certain plane. This does mean that sometimes, this VERY IMPORTANT marker is covered up by rocks or other objects. So, this seeks to get rid of that potential flaw, as well as do some other things.
Sometimes, when objects are rendered via GAGS or other code-means, they tend to have the same default Purple/White Sprite that any object without a valid icon_state has. This has caused me some confusion, so I have decided to create a new icon for conflict markers. This icon was designed to be as ugly as possible, while creating as much contrast as possible with the background by incorporating several colors into its design. I hope you find merge conflicts as unpleasant as I do.
I also updated mapmerge2 to have it so you can set the specified path of the object, as well as a small comment on the warnings if you do not heed it. I'm keeping the fact that mapmerge2 adds a name to the object just in case someone else really needs that. I also updated the linters to check for this path as well (even though the name and description should suffice for linting), and it should all be gravy from here.
* Adds further contrast to the DMI.
* Splits the merge conflict marker into a generic /obj
I also added a thing where if it didn't get caught by linters and it showed up on Initalize, it would error to mapping logs, spit out an error in world, and do all sorts of stuff to remind you.
* python new line
* forgot to add a tab
* Merge Conflict Markers - The Explicit Pathing, Layering, Iconing, Warning.
Co-authored-by: san7890 <the@san7890.com>
* Completely removes `proc_holders` from existence. Refactors all wizard, xeno, spider, and genetics powers to be actions. Also refactors and sorts ton of accompanying code.
* our changes
* yes
* 0
* Update blackmesa.dmm
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
* [MDB Ignore] Shifts all (sane) varedited signs to directionals (#68004)
* [MDB Ignore] Shifts all (sane) varedited signs to directionals
Hey there,
So we have these cool new sign directionals now, but we still have all of the old pixel-shifted pre-fabrications lying around. So, I added an UpdatePaths (as well as Updated the Paths) to be a bit better at using directionals, because directionals are pretty neato.
This should update every single var_edit that used the proper 32 pixelshift (some of them used 28, and I'm unable to account for that automatically with current tooling) into a proper subtype. Mappers tend to learn by looking at well established maps, so it's always important to ensure that the well-established maps use the most recent tooling (i.e.: bring them up to the surface) and avoid needless excess lines in maps.
* The Commit With All The Maps
OH GOD OH FUCK
* Renames the UpdatePaths
* [MDB Ignore] Shifts all (sane) varedited signs to directionals
* updates all our maps
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Jolly-66 <70232195+Jolly-66@users.noreply.github.com>
* Fixes UpdatePaths removing used keys if they got touched twice (#67489)
* Fixes UpdatePaths removing used keys if they got touched twice
Co-authored-by: AnturK <AnturK@users.noreply.github.com>
* Greps to check for commonly misplaced structures in closed turfs (#67447)
Adds some checks for structures that are commonly misplaced inside walls. One of the more recent updatepaths also replaced a bunch of posters with windoors in walls so this will help find all those.
I also edited the one that checks for lattices to look for closed turfs, because we really don't want the structures we're looking for to be in any closed turfs anyways.
We don't want to look for all structures like this because things like transit tubes exist.
* Greps to check for commonly misplaced structures in closed turfs
* grep fix
Co-authored-by: Son-of-Space <63861499+Son-of-Space@users.noreply.github.com>
Co-authored-by: John Doe <gamingskeleton3@gmail.com>
* [MDB Ignore] OH GOD OH FUCK OH SHIT OH LORD - SPACE AND RUINS IS BROKEN (#67324)
So, for the last few days on production, Space Ruin generation has refused to work. Why is this? It's because in #67107 (cfc2330528), we repathed `/area/space` to `/area/misc/space` (lol i should have paid attention to that) without updating everything in code to match. I couldn't seem to get `/area/misc/space` to properly work somehow (this could have also been something I was doing wrong), but I worked it back to just making everything vanilla `/area/space` and all of those unwanted behaviors should be squashed out. Let's get the game working again.
* fix
* fix2
Co-authored-by: san7890 <the@san7890.com>
* Adds Greps for Multiple Areas/Turfs on the same tile. (#67173)
Hey there,
Even though mapmerge2 (through behavior introduced in #39889) should automatically check for "stacked turfs", they still slip through somehow. Not really sure how, but let's make sure that doesn't happen again with the power of grep.
* Adds Greps for Multiple Areas/Turfs on the same tile.
Co-authored-by: san7890 <the@san7890.com>
* [MDB IGNORE] The Grand Airlock Naming Audit (#67235)
I manually audited all 4,710 instances of airlocks across all maps for upper casing
You'll never guess what I found.
UPDATE: We now have a grep to check for mistitled airlocks, and it's in this PR!
* [MDB IGNORE] The Grand Airlock Naming Audit
* TG MAP RESET
Co-authored-by: Son-of-Space <63861499+Son-of-Space@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
* [MDB IGNORE] More /area/ typepath organization and cleanup (#67107)
This further continues what I did in b4fb8f3ed1 (but instead of just stations, its now every (most) applicable area in the game
* [MDB IGNORE] More /area/ typepath organization and cleanup
* wew
* e
* Update CentCom_skyrat.dmm
* wew
* ews
Co-authored-by: Jolly <70232195+Jolly-66@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
* Fixes examination room signs and fixes sign UpdatePath (#67209)
#66754 (8764893593) added an UpdatePath for the pathing changes it brought to signs but forgot to replace a bit when I assume they copypasted from the windoor UpdatePath.
All our exam room signs turned into maintenance signs and our maintenance signs turned into wall windoors one of which was adressed in #67122 (9f5f629656). I lazily tried looking for more wall windoors but didn't find any so this PR focuses mostly on bringing back the exam room signs and fixing the UpdatePath to prevent downstreams from having to deal with more busy work.
* Fixes examination room signs and fixes sign UpdatePath
Co-authored-by: Pepsilawn <reisenrui@gmail.com>