Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

Re-add Send Admin Message functionality #67874

Merged
merged 1 commit into from Jun 24, 2022

Conversation

Hamcha
Copy link
Contributor

@Hamcha Hamcha commented Jun 19, 2022

About The Pull Request

Re-adds the code that went missing when #65755 was merged.
Closes #66777
There is also a PR (#66786) that tried to kill this functionality altogether, but was closed because the feature is considered valuable.

I admit the code doesn't look great (I tried to keep it as it was as much as possible) and it should be TGUI going forward, but this has been broken for a while now and it's incredibly confusing to have a button that doesn't work while no one seems interested in fixing it properly.

Why It's Good For The Game

Sending fake messages is a nice tool for traitors or just pranks. Syndie Comms Agent has a message console next to it, and not being able to send fake messages has been a big downgrade to how it can interact with the station (you can do radio but you get found out pretty easily).

Changelog

馃啈
fix: the message monitor console can now send admin messages again
/:cl:

@tgstation-server tgstation-server added the Fix Rewrites a bug so it appears in different circumstances label Jun 19, 2022
@YakumoChen
Copy link
Contributor

Pro tip
If you replace the line in the PR body:

There is an issue tracking this: #66777

With "closes #66777" the PR will, when merged, close the relevant issue automatically.

@Hamcha
Copy link
Contributor Author

Hamcha commented Jun 20, 2022

Pro tip If you replace the line in the PR body:

There is an issue tracking this: #66777

With "closes #66777" the PR will, when merged, close the relevant issue automatically.

Right, forgot about that! Changed the body to say that

@SuperNovaa41 SuperNovaa41 added the Verified 鉁旓笍 Yeah, i'm a coder. What about it? label Jun 24, 2022
@SuperNovaa41 SuperNovaa41 merged commit f60c341 into tgstation:master Jun 24, 2022
github-actions bot added a commit that referenced this pull request Jun 24, 2022
@Hamcha Hamcha deleted the readd-fake-msg branch June 24, 2022 07:23
Jacquerel pushed a commit to Jacquerel/orbstation that referenced this pull request Jun 27, 2022
Re-adds the code that went missing when tgstation#65755 was merged.
Jacquerel pushed a commit to Jacquerel/orbstation that referenced this pull request Jun 27, 2022
Wallemations added a commit to Wallemations/heavenstation that referenced this pull request Jul 4, 2022
* Fixes for language headset keys. (#67881)

* Automatic changelog generation for PR #67881 [ci skip]

* Automatic changelog compile [ci skip]

* Adds Prettierx - or how I broke TGUI for the nth time (#67935)

Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>

* Automatic changelog generation for PR #67935 [ci skip]

* (code bounty) The tram is now unstoppably powerful. it cannot be stopped, it cannot be slowed, it cannot be reasoned with. YOU HAVE NO IDEA HOW READY YOU ARE (#66657)

ever see the tram take 10 milliseconds per movement to move 2100 objects? now you have
https://user-images.githubusercontent.com/15794172/166198184-8bab93bd-f584-4269-9ed1-6aee746f8f3c.mp4
About The Pull Request

fixes #66887

done for the code bounty posted by @MMMiracles to optimize the tram so that it can be sped up. the tram is now twice as fast, firing every tick instead of every 2 ticks. and is now around 10x cheaper to move. also adds support for multiz trams, as in trams that span multiple z levels.

the tram on master takes around 10-15 milliseconds per movement with nothing on it other than its starting contents. why is this? because the tram is the canary in the coal mines when it comes to movement code, which is normally expensive as fuck. the tram does way more work than it needs to, and even finds new ways to slow the game down. I'll walk you through a few of the dumber things the tram currently does and how i fixed them.

    the tram, at absolute minimum, has to move 55 separate industrial_lift platforms once per movement. this means that the tram has to unregister its entered/exited signals 55 times when "the tram" as a singular object is only entering 5 new turfs and exiting 5 old turfs every movement, this means that each of the 55 platforms calculates their own destination turfs and checks their contents every movement. The biggest single optimization in this pr was that I made the tram into a single 5x11 multitile object and made it only do entering/exiting checks on the 5 new and 5 old turfs in each movement.
    way too many of the default tram contents are expensive to move for something that has to move a lot. fun fact, did you know that the walls on the tram have opacity? do you know what opacity does for movables? it makes them recalculate static lighting every time they move. did you know that the tram, this entire time, was taking JUST as much time spamming SSlighting updates as it was spending time in SStramprocess? well it is! now it doesnt do that, the walls are transparent. also, every window and every grille on the tram had the atmos_sensitive element applied to them which then added connect_loc to them, causing them to update signals every movement. that is also dumb and i got rid of that with snowflake overrides. Now we must take care to not add things that sneakily register to Moved() or the moved signal to the roundstart tram, because that is dumb, and the relative utility of simulating objects that should normally shatter due to heat and conduct heat from the atmosphere is far less than the cost of moving them, for this one object.
    all tram contents physically Entered() and Exited() their destination and old turfs every movement, even though because they are on a tram they literally do not interact with the turf, the tram does. also, any objects that use connect_loc or connect_loc behalf that are on the same point on the tram also interact with each other because of this. now all contents of the tram act as if theyre being abstract_move()'d to their destination so that (almost) nothing thats in the destination turf or the exit turf can react to the event of "something laying on the tram is moving over you". the rare things that DO need to know what is physically entering or exiting their turf regardless of whether theyre interacting with the ground can register to the abstract entered and exited signals which are now always sent.
    many of the things hooked into Moved(), whether it be overrides of Moved() itself, or handlers for the moved signal, add up to a LOT of processing time. especially for humans. now ive gotten rid of a lot of it, mostly for the tram but also for normal movement. i made footsteps (a significant portion of human movement cost) not do any work if the human themselves didnt do the movement. i optimized has_gravity() a fair amount, and then realized that since everything on the tram isnt changing momentum, i didnt actually need to check gravity for the purposes of drifting (newtonian_move() was taking a significant portion of the cost of movement at some points along the development process). so now it simply doesnt call newtonian_move() for movements that dont represent a change in momentum (by default all movements do).

also i put effort into 1. better organizing tram/lift code so that most of it is inside of a dedicated modules folder instead of scattered around 5 generic folders and 2. moved a lot of behavior from lift platforms themselves into their lift_master_datum since ideally the platforms would just handle moving themselves, while any behavior involving the entire lift such as "move to destination" and "blow up" would be handled by the lift_master_datum.

also
https://user-images.githubusercontent.com/15794172/166220129-ff2ea344-442f-4e3e-94f0-ec58ab438563.mp4
multiz tram (this just adds the capability to map it like this, no tram does this)
Actual Performance Differences

to benchmark this, i added a world.Profile(PROFILER_START) and world.Profile(PROFILER_START) to the tram moving, so that it generates a profiler output of all tram movement without any unrelated procs being recorded (except for world.Profile() overhead). this made it a lot easier to quantify what was slowing down both the tram and movement in general. and i did 3 types of tests on both master and my branch.

also i should note that i sped up the "master" tram test to move once per tick as well, simply because the normal movement speed seems unbearably slow now. so all recorded videos are done at twice the speed of the real tram on master. this doesnt affect the main thing i was trying to measure: cost for each movement.

the first test was the base tram, containing only my player mob and the movables starting on the tram roundstart. on master, this takes around 13 milliseconds or so on my computer (which is pretty close to what it takes on the servers), on this branch, it takes between 0.9-1.3 milliseconds.

ALSO in these benchmarks youll see that tram/proc/travel() will vary significantly between the master and optimized branches. this is 100% because there are 55 times more platforms moving on master compared to the master branch, and thus 55x more calls to this proc. every test was recorded with the exact same amount of distance moved

here are the master and optimized benchmark text files:
master
master base tram.txt
https://user-images.githubusercontent.com/15794172/166210149-f118683d-6f6d-4dfb-b9e4-14f17b26aad8.mp4
also this shows the increased SSlighting usage resulting from the tram on master spamming updates, which doesnt happen on the optimized branch

optimized
optimization base tram.txt
https://user-images.githubusercontent.com/15794172/166206280-cd849aaa-ed3b-4e2f-b741-b8a5726091a9.mp4

the second test is meant to benchmark the best case scaling cost of moving objects, where nothing extra is registered to movement besides the bare minimum stuff on the /atom/movable level. Each of the open tiles of the tram had 1 bluespace rped filled with parts dumped onto it, to the point that the tram in total was moving 2100 objects. the vast majority of these objects did nothing special in movement so they serve as a good base case. only slightly off due to the rped's registering to movement.

on master, this test takes over 100 milliseconds per movement
master 2000 obj's.txt
https://user-images.githubusercontent.com/15794172/166210560-f4de620d-7dc6-4dbd-8b61-4a48149af707.mp4

when optimized, about 10 milliseconds per movement
https://user-images.githubusercontent.com/15794172/166208654-bc10086b-bbfc-49fa-9987-d7558109cc1d.mp4
optimization 2000 obj's.txt

the third test is 300 humans spawned onto the tram, meant to test all the shit added on to movement cost for humans/carbons. in retrospect this test is actually way too biased in favor of my optimizations since the humans are all in only 3 tiles, so all 100 humans on a tile are reacting to the other 99 humans movements, which wouldnt be as bad if they were distributed across 20 tiles like in the second test. so dont read into this one too hard.

on master, this test takes 200 milliseconds
master 300 catgirls.txt

when optimized, this takes about 13-14 milliseconds.
optimization 300 catgirls on ram ranch.txt
Why It's Good For The Game

the tram is literally 10x cheaper to move. and the code is better organized.
currently on master the tram is as fast as running speed, meaning it has no real relative utility compared to just running the tracks (except for the added safety of not having to risk being ran over by the tram). now the tram of which we have an entire map based around can be used to its full potential.

also, has some fixes to things on the tram reacting to movement. for example on master if you are standing on a tram tile that contains a banana and the TRAM moves, you will slip if the banana was in that spot before you (not if you were there first however). this is because the banana has no concept of relative movement, you and it are in the same reference frame but the banana, which failed highschool physics, believes you to have moved onto it and thus subjected you to the humiliation of an unjust slipping. now since tram contents that dont register to abstract entered/exited cannot know about other tram contents on the same tile during a movement, this cannot happen.

also, you no longer make footstep sounds when the tram moves you over a floor
TODO

mainly opened it now so i can create a stopping point and attend to my other now staling prs, we're at a state of functionality far enough to start testmerging it anyways.

add a better way for admins to be notified of the tram overloading the server if someone purposefully stuffs it with as much shit as they can, and for admins to clear said shit.
automatically slow down the tram if SStramprocess takes over like, 10 milliseconds complete. the tram still cant really check tick and yield without introducing logic holes, so making sure it doesnt take half of the tick every tick is important
go over my code to catch dumb shit i forgot about, there always is for these kinds of refactors because im very messy
remove the area based forced_gravity optimization its not worth figuring out why it doesnt work
fix the inevitable merge conflict with master lol
create an icon for the tram_tunnel area type i made so that objects on the tram dont have to enter and exit areas twice in a cross-station traversal

    add an easy way to vv tram lethality for mobs/things being hit by it. its an easy target in another thing i already wanted to do: a reinforced concept of shared variables from any particular tram platform and the entire tram itself. admins should be able to slow down the tram by vv'ing one platform and have it apply to the entire tram for example.

Changelog

cl
balance: the tram is now twice as fast, pray it doesnt get any faster (it cant without raising world fps)
performance: the tram is now about 10 times cheaper to move for the server
add: mappers can now create trams with multiple z levels
code: industrial_lift's now have more of their behavior pertaining to "the entire lift" being handled by their lift_master_datum as opposed to belonging to a random platform on the lift.
/cl

* Automatic changelog generation for PR #66657 [ci skip]

* Fixes coffin's export values to what they actually should be (#67931)

* Adds coffins to crates' exclude_types.

Adds coffins to crates' exclude_types.

* Updates comment

Updates a years old comment with the current economy prices.

* Automatic changelog generation for PR #67931 [ci skip]

* All code files must now be included in the .dme, removes some old duplicate files that never were (#67887)

All files must now be included in the .dme, removes some old files

* Rename "Delimber" anomaly to "Bioscrambler" anomaly. (#67886)

Renames all occurrences of "delimber", "delimber_anomaly", "delimbering", etc. to "bioscrambler", "bioscrambler_anomaly", and "bioscrambling", etc.

* Automatic changelog generation for PR #67886 [ci skip]

* Re-add Send Admin Message functionality (#67874)

Re-adds the code that went missing when #65755 was merged.

* Automatic changelog generation for PR #67874 [ci skip]

* Silver golems text no longer tells them they are antimagic (#67775)

* remove trait_holy, add antimagic

* readds trait_holy and changes desc

* Automatic changelog generation for PR #67775 [ci skip]

* Soap and biopsy tool suit storage sprites (#67604)

Noticed some error sprites so went on with this PR. For all the soap sprites I just moved the inhand soap sprites to the suit storage position, the soap sprites were made by: epochayur and SweptWasTaken.

* Automatic changelog generation for PR #67604 [ci skip]

* Fixes supermatter cascade final objective rolling when the engine has already exploded (#67665)

Adds a check so that if there are no var/obj/machinery/power/supermatter_crystal/engine on the station. Testing was a bit hard because I didn't know how to test any of it with admin tools, so it involved a lot of running around doing objectives on local until I got a final objective. I'm pretty sure this PR works correctly.

* Automatic changelog generation for PR #67665 [ci skip]

* Fixes gunshot sound runtime (#67943)

* Fixes the bug

* Updates comment

* Inhand sprites for Bluespace RPED (#67932)

Adds an inhand sprite for the Bluespace RPED

* Automatic changelog generation for PR #67932 [ci skip]

* You can attach a bell to your wheelchair (#67821)

* Bells can now be attached to wheelchairs.

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>

* Automatic changelog generation for PR #67821 [ci skip]

* Removes a misleading tip + unused defines related to the Ballmer peak (#67906)

* Removes a misleading ballmer define, as drunken science points were removed in experisci.

* Automatic changelog generation for PR #67906 [ci skip]

* Re-adds freeform/purge boards to all AI uploads, removes from spawners (#67915)

Re-adds the freeform boards to an open table in all the AI uploads, re-adds the purge boards to the harmful table in all uploads, and removes them from their associated spawners so that all stations have them as roundstart guaranteed spawns.

* Automatic changelog generation for PR #67915 [ci skip]

* Adjusts Layering of Broken/Burnt Floor Helpers (#67958)

Small QoL thing for mappers. Mapping Helpers automatically go on the highest plane possible, POINT_LAYER. This would result in broken/burnt flooring having the following appearance in map editors:

This is just weird clutter that doesn't particularly look good. So, I just switched both of those subtypes to the same layer that we use for cleanable decal effects, just for nice visual clarify. Here's what that looks like:

* Fixes spontaneous test failure that made nuclear disks not teleport correctly in Multi-Z debug by adding the blobstart that it should have anyway (#67948)

Fixes #67789 

This was spontaneous because stationloving uses find_safe_turf, which has an iteration limit of 1,000.

* Fixes the white cane sounds, and blind mob's examine. (#67941)

* Automatic changelog generation for PR #67941 [ci skip]

* Security Level Datums (#67949)

* Automatic changelog generation for PR #67949 [ci skip]

* Automatic changelog compile [ci skip]

* fixes ghost hearing (#67989)

* Automatic changelog generation for PR #67989 [ci skip]

* Fixes several spelling mistakes in ash lore (#67952)

In several cases, the Nightwatcher has been called Nightwater. This PR fixes that.

* Automatic changelog generation for PR #67952 [ci skip]

* Changes shutters & airlocks to glass in Icebox atmos (#67965)

See title, the non-radiation shutters and non-maintenance airlocks in the new Icebox atmos were made transparent
(Note: Not tested in game, but viewed in Dream Maker and looks fine)

* Automatic changelog generation for PR #67965 [ci skip]

* Adds the Active Sonar mod to the game.  (#67828)

Adds the Active Sonar Module to the game, a module which lets you see the locations of living creatures within a 9 tile radius.
It can be attained by researching Security Modules, and then printed like any other module.
It takes 3 complexity to house, has a 25 second cooldown, and takes a good amount of energy to use.

* Automatic changelog generation for PR #67828 [ci skip]

* [NO GBP] Allow expanded hypospray chems to refill once more (#67966)

Co-authored-by: tattle <article.disaster@gmail.com>

* Automatic changelog generation for PR #67966 [ci skip]

* Removes the Exclamation Point from the Server Hop Verb (#67970)

Removes the Exclamation Point from Server Hop

Hey there,

Recently, I haven't been able to directly connect to Sybil. However, I am able to easily get onto Campbell, and use the Server Hop command to readily get over there. However, one small snag I've ran into is that the `Server Hop!` verb means that you have to type it in as `server-hop!` in the chat bar. This was really confusing to me the first few times because no other verb requires you input in the correct punctuation. So, I decided to prune out the exclamation point to get weird of this oddity.

* Automatic changelog generation for PR #67970 [ci skip]

* Fix freon reacting instantly (#67954)

So why this was happening was because in DM, - has a higher precedence than **, so instead of a nice Gaussian function, this was made, where the y-coordinate represents the amount of freon that's made as a percentage of the total possible amount, which meant that unless your temperature was basically right at 800K, the freon, even thousands of moles of it, would be made instantly (or nearly instantly).

* Automatic changelog generation for PR #67954 [ci skip]

* Allows roundstart access to icebox atmospherics APC (#67963)

Allows Icebox's atmospherics APC to be accessible roundstart by moving a console.

* Automatic changelog generation for PR #67963 [ci skip]

* Patches Rad_Area Directional Sign Helpers (#67945)

Patches Rad_Area Directional Sign

Hey there,

I was trying to do something much more ambitious, but that completely fell through. I did catch this little mistake that caused this to occur though:

This PR just makes it the correct pathing for the directional helpers.

* Automatic changelog compile [ci skip]

* Dynamic 2022 part 1 tweaks (#67823)

    Renames low_pop_minimum_threat to low_pop_maximum_threat. Untested but it'll fail CI if it doesn't work
    Increases threat_per_midround_roll from 6.5 to 7, to slightly shift number of midrounds.
    Lowered the number of roundstart traitors. I intend to do more in the larger part 2 PR, but the crux of it is that Dynamic 2022 part 1 creates a lot of midround traitors, which is great, but now that means we can lower the amount of total roundstart traitors. This changes it from 1 traitor every 24 people to 38. Eventually I want to make traitor not scale so hard, but it'll be tough to do that and make sure it doesn't just roll extremely chaotic rulesets in its place.

* Automatic changelog generation for PR #67823 [ci skip]

* Converts all* of the times in the food files into SECONDS (#67984)

drink your processable component copy-paste

* Automatic changelog generation for PR #67984 [ci skip]

* Adds Current Map To Hub Entry (#67986)

* Automatic changelog generation for PR #67986 [ci skip]

* Gave dirs to all MetaStation shutters (#68018)

gives dirs to all shutters on metastation

* Automatic changelog generation for PR #68018 [ci skip]

* Add monitor decryption key to Listening post (#68010)

* Automatic changelog generation for PR #68010 [ci skip]

* Fixes Invisible Equipment on Monkified Monkeys (#68009)

Fix invisible monkey equipment

* Automatic changelog generation for PR #68009 [ci skip]

* Fixes items disappearing in the suit storage slot (#68008)

Original fix by SabreML
Ported from github.com/pariahstation/Pariah-Station/pull/768

* Automatic changelog generation for PR #68008 [ci skip]

* Gorillas Move Slightly Faster When Not Holding Anything (#68007)

Gorilla speed change

* Automatic changelog generation for PR #68007 [ci skip]

* [MDB Ignore] Makes mining and labor shuttle home docks their own type, rather than varedits (#68006)

I'll have to do the others at some point

I don't want to, but it'll happen

* Automatic changelog generation for PR #68006 [ci skip]

* [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

* Automatic changelog generation for PR #68004 [ci skip]

* Updates how holopads look like in map editors (#67997)

Hey there,

There was this really picky thing with Holopads being in `FLOOR_PLANE`, so you would get stuff like this since wires+pipes are in the `GAME_PLANE`:

Looks ugly, right? So, let's set the holopad to `GAME_PLANE` for mapping purposes (since it'll help you visualize what you're looking at in game), and have it set to `FLOOR_PLANE` on Initialize. If we didn't set it on mapload, you'd get this really jarring shadow effect that doesn't really feel "in-place".

* Landmark Opportunities - In them their OBJ_LAYER hills (#67996)

Hey there,

Landmarks were in the `TURF_LAYER`... layer, so that means you would see bizarre stuff like this in mapping:

Really obtuse to have everything, and I do mean everything, just be on the same layer of the turf just due to how often stuff gets covered up and left behind. So, I decided to make every single landmark (except for the jobstart ones, which were already on `MOB_LAYER`) to the `OBJ_LAYER` layer. This looks a lot better to my eyes, and the results speak for themselves:

* MetaStation Brig Underfloor and Decalling Audit (#67995)

Hey there,

I was enjoying a nice round of ss13 a few days ago, when I noticed this:

That's very odd! The caution line was painted in game, but the decals overlapping in such a manner was definitely in the map. So I decided to hunt down and standardize the decalling for the brig to ensure that you wouldn't have to do this. While in the area, I found a lot of weird stuff like:

* Unconnected shocked windows

* Atmospherics/Wires running under tables

* More Decalling Weirdness

So, I just straighted that all out to the point where it hopefully looks better now.

* Automatic changelog generation for PR #67995 [ci skip]

* Fixes Icon for the Station Crash Effect (#67994)

Hey there,

Apparently when balloons were split out of `items_and_weapons.dmi`, this was left behind causing stuff like this to happen:

Pretty goofy, right? Let's update the DMI pathing to ensure we don't see the silly purple/white cube when we really want to see an effect that nearly no one knows of (it's the thing that helps you crash the shuttle into a station, I think?).

* meteor with engines strapped to it rocks now have air  (#67993)

Update emergency_meteor.dmm

* Automatic changelog generation for PR #67993 [ci skip]

* Fullscreen, status bar hiding, chat input following the theme (#67987)

* Initial commit

* input is colored according to the theme

* removed unused setting

* Automatic changelog generation for PR #67987 [ci skip]

* Scrubbers will now turn off when connected pipe disconnects. (#67985)

Scrubber thing.

Scrubbers will now turn off on atmos machinery disconnect() proc call.

* Automatic changelog generation for PR #67985 [ci skip]

* Fix reinforcement nukeops not getting their HUDs (#67976)

* Automatic changelog generation for PR #67976 [ci skip]

* Fixes regenerative core implants not functioning (#67961)

* Repaths regen_core

* updates var names

* updates var name

* Automatic changelog generation for PR #67961 [ci skip]

* Glass floor cracking now uses overlays, plasma glass floors display properly (#67957)

* Renames plasma floor damage states

* Fixes bug, updates to overlays

* Automatic changelog generation for PR #67957 [ci skip]

* Fixes an ert bounty hunter's outfit, and the bounty hunter ID in general (#67955)

Fixes an ert bounty hunter's outfit, and the bounty hunter ID

* Automatic changelog generation for PR #67955 [ci skip]

* Fixes IceBox Disposals Being Broken in Maintenance (#67939)

Fixes IceBox Disposals

My bad, I broke it in #67706 (9ee1228a94a4899b73506489e62d8f17ff6d78aa).

* Automatic changelog generation for PR #67939 [ci skip]

* Fixes the beach gateway to have atmos that's breathable (#68012)

Did you know that the base type of the beach turf has different atmos to literally every other tile in that gateway?

* Automatic changelog generation for PR #68012 [ci skip]

* Fix display formatting issue with operating computer UI (#67877)

Fix display formatting issue with operating computer ui

* Automatic changelog generation for PR #67877 [ci skip]

* Automatic changelog compile [ci skip]

* fixes the worn sprites of the material knight armor (#67864)


About The Pull Request

The up and down directions of the greyscale knight armor's worn sprites were two pixels too high. I moved them down by that much.
Why It's Good For The Game

Fixes #67861
Changelog

cl
fix: The runic knight helmet's worn sprites have had their alignment fixed.
/cl

* Automatic changelog generation for PR #67864 [ci skip]

* Piano broken sprite, helper, and hit sound (#68003)

* Does the PR

* fixes playsound locations

* Automatic changelog generation for PR #68003 [ci skip]

* Examine Blocks (#67937)

* adds examine_block class and a define for it
made some outputs in chat use examine_block

* add examine block to tip of the round
clean up some ------ and ***** seperators
added <hr> tags to divide sections
cleaned up botany plant analyzer text outputs

* bullet points for reagents

* removes <hr> from mobs examines
fixes AIs and borgs having a double "That's Default Cyborg!"
removed some \n newlines
minor code edits

* removes all <hr>
bold names in get_examine_name()
cleaned up plant analyzer output formatting
adjust colors and margins of examine_block class
remove \a from borg examine()

* remove max-width from css

* changed margin and padding units from px to em

* minor edit

* Automatic changelog generation for PR #67937 [ci skip]

* Refactors Knock to use Connect Loc (#67884)

* Knock uses a new connect loc signal.

* Automatic changelog generation for PR #67884 [ci skip]

* Revamps derelict1.dmm into a proper derelict (#67683)

Replaces the barren derelict1.dmm with something of substance.

This is the old version for those of you who were curious.
And here is the new.

This gives the ruin a little bit of extra panache, ties the world a bit more together, and is a nice homage to our sister server.

* Automatic changelog generation for PR #67683 [ci skip]

* Replaces the tram generic construction console with an aux construction console (#68022)

* Replaces the generic construction console on tramstation with an aux console

* Readds a decal I accidentaly removed

* Automatic changelog generation for PR #68022 [ci skip]

* Fixed DeltaStation mining firelock placement (#68020)

DeltaStation has a firelock placed adjacent to it's mining shuttle, meaning that once the shuttle departs it instantly triggers the firelock. This PR removes that firelock

* Automatic changelog generation for PR #68020 [ci skip]

* Unearths A Covered Keycard Device in IceBoxStation (#67944)

* Unearths A Covered Keycard Device in IceBoxStation

Hey there,

An electric sign was covering up the CE's Keycard Device (which looks ugly and confusing since you see the sign through the window, and you can't click on it).

* Fixes merge conflicts and decalling

may as well flatten some keys while i'm in the area y'know

* Automatic changelog generation for PR #67944 [ci skip]

* Update brokentiling to match new tiles (#68017)

update brokentiling

Co-authored-by: tattle <article.disaster@gmail.com>

* Automatic changelog generation for PR #68017 [ci skip]

* Fixes the frozen status trait never being applied (#68015)

* Fixes the frozen trait never being applied

* Don't apply if we already have the trait

* Check the target obj

* Automatic changelog generation for PR #68015 [ci skip]

* Snails have eyes again (#68013)

* Fixes snail eyes being errors

* Fixes the screenshot for the snails (smh there was an error in there Mothblocks)

* Automatic changelog generation for PR #68013 [ci skip]

* martial arts bug fix (#68028)

* Automatic changelog generation for PR #68028 [ci skip]

* Automatic changelog compile [ci skip]

* Adjusts Door Mapping Helper Layers (#68032)

Hey there,

Access helper layers are great and all, but they tended to have this sort of effect on maps where since they were on the same layer as all of the other mapping helpers for doors, they would just tend to cover up the smaller sprites the others used, like this:

So, this just switches up the layers a bit by having a new layer called `DOOR_ACCESS_HELPER_LAYER` (that is still above `OPEN_DOOR_LAYER`) just for Access Helpers, while every other airlock helper takes the `DOOR_HELPER_LAYER` (like before), which has been increased by 0.01 more funny number.

Ok?

* Fixes some door access on Deltastation. (#68034)

Fixes some door access on deltastation.
- Service Hall
- Shipping Room

* Automatic changelog generation for PR #68034 [ci skip]

* Ice Box Station Kitchen Rework - Worthy Of The Name (#67854)

* Automatic changelog generation for PR #67854 [ci skip]

* Fixes a runtime when inflicting a blunt wound on an armless human (#68030)

fixes a runtime when inflicting a blunt wound on an armless human

* Automatic changelog generation for PR #68030 [ci skip]

* Brand of Dance spell fix (#68035)

spell fix

* Automatic changelog generation for PR #68035 [ci skip]

* TGUI Say no longer deletes your currently typed message on history (#67971)

first commit

* Automatic changelog generation for PR #67971 [ci skip]

* Ert medic belts (#67916)

* Adds belt

* Adds belt to ERT medic

* Automatic changelog generation for PR #67916 [ci skip]

* Fixes gravity gen sound & off gen loops (#67586)

* Fixes some minor problems with grav gen

* Fixes gravity generator completely obliterating your ears by having several gravity generator soundloops (now there's only 1) by starting soundloop on creation, during parent's Initialize (so it doubled since things like grav gen part (a generator inside the generator??), starts a soundloop too, now the station's gen just starts the loop if it spawns on)
* Fixes offstation gravity generator looking like it's turned on when it isn't, and fixes it having sound when it's off.
* Removes /station grav gen subtype, because it was frankly useless.
* Adds some early returns to gravity generator's process, and removes the unused set_state proc, which was replaced with enable() and disable() in the radiation rework.
* Lastly, removes grav gen parts from QDEL_NULL'ing their soundloop twice, since they called parent's Destroy() that did it for them anyways.

* fixes minor typo

Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>

* more grav gen code improvement

This commit is solely focused on code improvement.

* gravity_field and sound_loop was moved from gravity generator to main gravity generator, since they're the only place it was used.
* Added checks for a main part across generator part procs, rather than using ? randomly.
* Autodocs all Gravity generator vars
* Adds better var names in for() loops, makes use of as_anything, and renames parts to generator_parts.
* Adds some better var names in general.

* Adds an UpdatePaths

* fixes infinite del loop

* fix to harddels

* Update gravitygenerator.dm

* merge conflict moment

* fix maps

* fixes merge conflict

* Update gravitygenerator.dm

* updates the updatepath

* Update gravitygenerator.dm

* Update gravitygenerator.dm

* merge conflict

* set_broken()

* Update gravitygenerator.dm

* unregister signal on destroy

* Update gravitygenerator.dm

* middle part

* Update gravitygenerator.dm

* more improvement + moves grav code to grav file

* Update gravitygenerator.dm

* handles map merge conflicts

Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>

* Automatic changelog generation for PR #67586 [ci skip]

* Watering cans for botany (#67712)

* Watering cans for botany

* Clean up weird bugs by just coding the feature out

* 70u for the old can and /// like it should be

* Updated can icons courtesy of Wallem

* Swaps botany buckets for watering can on maps

* A line

* Automatic changelog generation for PR #67712 [ci skip]

* Makes the noblium gas shells experiment explicitly clear that it means hypernoblium (#67898)

* Automatic changelog generation for PR #67898 [ci skip]

* fixes headspike runtime error and bug (#68040)

* fixes headspike runtime error and bug

* requested change

* Revert "requested change"

This reverts commit ab3aefa180ff32cee00c16b8baed3db1fe1b1fb0.

* Revert "fixes headspike runtime error and bug"

This reverts commit ed1f76e88b709064df0dbde655ca618ddbb78b3d.

* actual fix

* Automatic changelog generation for PR #68040 [ci skip]

* Automatic changelog compile [ci skip]

* Add style guide expectations for macros (#67868)



Wake up honey new Mothblocks style guide just dropped

Rendered

Read closely as I make some new expectations that I think are very good for readability but that we don't tend to employ.

@tgstation/commit-access

* MULEbots uses the blood walking element (now component), fixes MULEs tracking blood infinitely  (#68047)

Blood walking is a component, MULES use blood walking

* Automatic changelog generation for PR #68047 [ci skip]

* Fixes being able to hack a comms console if it gets depowered or broken mid hack (#68048)

Fixes hacking consoles after they're unpowered

* Automatic changelog generation for PR #68048 [ci skip]

* Patch out a method to bypass xenobio progression (#67938)

* Patch out a method to bypass xenobio progression

* Allow sentient humans to still turn into a random slime

* Apply suggestions from code review

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>

* Use helper procs

* Add readability change to earlier lines as well

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>

* Automatic changelog generation for PR #67938 [ci skip]

* Fixes some soulstone issues, overall makes soulstone behavior more consistent (#67846)

Fixes

    Inconsistent behaviour of the cult's sacrifices. #67014

Soulstones had a if(client) check prior to making a shade, which failed if the mob wasn't in their body.
So, we just grab the ghost before making a shade on capture.

This also allowed for the weird hack from #63707 to become unnecessary, so I reverted it.

    Fixes 

    Cult can no longer shade soul-less mobs. #66629

If you used a soulstone on a mindless mob, it would pass in is_sacrifice_target(null), which would always succeed if the cult team had an objective without a target. Which cults do have.

    Overall increases readability and reduces copypaste of soulstone code, making it a tad more consistent.

Moved a lot of copy+pasted "theme" code to the appropriate update_x procs. Cleaned up code in general, as is tradition with cult code.

* Automatic changelog generation for PR #67846 [ci skip]

* Fixes the Orion Trail not working properly when emagged (#68059)

fixes the Orion not working properly when emagged

* Automatic changelog generation for PR #68059 [ci skip]

* Updates the ghoulbot sprite to match the new mulebot sprite (#68042)

resprites the ghoulbot to conform to the new 3/4 mulebot sprite

* Automatic changelog generation for PR #68042 [ci skip]

* Adds Material tab for the autolathe to dispense the desired mats one put in and fixes a condition (#67848)

In the Autolathe, moves all the matts from construction to the new tab Material which allows you to dispense all the mats you put in
Also fixes missing "=" operator which wouldnt let you print 10 or 25 stack immiadetly once you reached it

* Automatic changelog generation for PR #67848 [ci skip]

* Directional Shutters For All Station Maps (#68056)

added directional sprites for window shutters
gave dirs to all shutters and window shutters (except zigzag pattern ones) on icebox, kilo, delta, tram
replaced SM shutters on kilo with radiation shutters

* Automatic changelog generation for PR #68056 [ci skip]

* Resprites the Makarov (#68050)

* sprites

* fixes sprite

* moves the supressor up one tile

* slightly tweaks a few colours (un rose golds it)

* handle changes

* suppresor

* Automatic changelog generation for PR #68050 [ci skip]

* Toppings for rootbread slices (#68037)

Toppings for korta bread slices

* Automatic changelog generation for PR #68037 [ci skip]

* Automatic changelog compile [ci skip]

* metastation library no longer has 2 air alarms (#68071)

removes one, moves another air alarm.

* Automatic changelog generation for PR #68071 [ci skip]

* Blacklists placeholder food items in the random food generator (#68062)

blacklist empty items

* Automatic changelog generation for PR #68062 [ci skip]

* Allow Agent cards to use numbers in their names (#68065)

* Automatic changelog generation for PR #68065 [ci skip]

* Lets SAW tools (and PKC) cut trees, MINING tools break rocks, and fixes e-blades cutting while off (#67285)

* Adds TOOL checks combined with the lists
* Chainsaws are now slow when turned off, and are pre-nerf speed when on
* Adds a better disallowed_tools check

* Automatic changelog generation for PR #67285 [ci skip]

* remove y##f in h##l spray, adds furry pride spray (#68077)

* Automatic changelog generation for PR #68077 [ci skip]

* Reworks (and nerfs) Hypernob internals for plasmamens (#67674)

* Automatic changelog generation for PR #67674 [ci skip]

* Makes gas filters smaller (#68086)

* Automatic changelog generation for PR #68086 [ci skip]

* Misc TypeScript conversions (#67967)


About The Pull Request

An atomization of #67809.

This PR aims to convert some miscellaneous UIs into TypeScript. Some of these are low hanging fruit, don't hate me, I am working up the self hatred to do more.
Why It's Good For The Game

TypeScript is objectively better and provides great tools to debug code. We should really work to just convert all the UI into TSX
Changelog

cl
code: Refactored a large number of TGUI interfaces into TypeScript. If something's broken, report it!
/cl

* Automatic changelog generation for PR #67967 [ci skip]

* Automatic changelog compile [ci skip]

* Revert "remove y##f in h##l spray, adds furry pride spray" (#68120)

Revert "remove y##f in h##l spray, adds furry pride spray (#68077)"

This reverts commit 79cf75afdc0608faf769b3c919d9cfdae30122d8.

* Hacking UI hotfix (#68124)

fixed the issue

* Automatic changelog generation for PR #68124 [ci skip]

* Resprites most of Chaplain's  choice beacon outfits (#68044)

imageadd: new sprites for the Chaplain's crusader, ancient, profane and follower outfits.

* Automatic changelog generation for PR #68044 [ci skip]

* Updates the sprites for bullets (inflight), adds pellet sprites, redoes the thermal projectile sprites (#67856)

imageadd: Improves the sprites for bullets, thermal projectiles, and introduces pellet sprites.

* Automatic changelog generation for PR #67856 [ci skip]

* Adds cancel event option for midround random events (#68055)

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>

* Automatic changelog generation for PR #68055 [ci skip]

* Fixes teleporting gun with telekinesis (#68083)

So when you fire a gun with the clumsy trait it has a chance to backfire at you and shoot yourself and if you dont have the no_drop trait will drop the gun on your location hence the teleporting gun bug with telekinesis. This pr adds a check to whether the user is firing via tele or not.

Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>

* Automatic changelog generation for PR #68083 [ci skip]

* Gives Sergeant-At-Armsky a unique description (#68097)

* I noticed he didn't have his own description like all the other variants of Beepsky, so I thought I'd maybe give him one.

Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>

* Automatic changelog generation for PR #68097 [ci skip]

* Fixed synthetic limbs to display the proper skin color. (#68094)

Fixes a bug with the Limb Grower where synthetic limbs permanently revert to the default coloration when attached to a body. As it is now, the green coloration of synthetic limbs is stored in the mutation_color variable, which is nullified when attached. This makes all limbs draw with the default coloration - "albino" for humans and a neutral grey for other species. This PR updates the limb grower to use the species_color variable instead, which is maintained when attached/detached.

* Automatic changelog generation for PR #68094 [ci skip]

* 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.  (#67083)

* destroy proc holder pt1
- change proc_holder/spell to action/cooldown/spell
- docs all the spell vars, renames some of them
- removes some useless vars
- start with pointed spells, as they're easy

* kill proc_holder pt2
- kill a buncha vars and replace it with flags
- convert a ton over
- general code improvements

* kill proc_holders pt3
- convert a good few more spells
- rename some signals
- handle statpanel
- better docs

* kiill proc_holder pt4:
- restructure the file system of action.dm, separating a good amount of item actions and miscellaneous garbage into files where they belong slightly better. Also splits off item actions, cooldown actions, innate actions, etc. into their own files, overlal making it much better to work with
- converts touch attacks to actions
- converts blood crawl, jaunt subtype

* kills proc_holder pt5
- clears up some icon issues so all the currently converted pages don't have errors
- shapeshift
- some more action cleanup

* kills proc_holder pt5.5:
- some documentation
- reworks feedback to prevent oversight with teleports and stuff

* kills proc_holder pt6:
- converted cult spells
- converted magic missile
- converted mime spells
- chipped away at the errors
- removed some vars which were too general, replaced them with more locally applicable vars. for example "range" which could mean "projectile range" or "aoe radius" or whatever - instead of having a broad net which everyone applies to in a confusing matter, instead lets each spell delegate on their own.
- merged magic/spell and magic/aoe, as the comment intended
- more unified behavior for spell levelling

* kill proc_holders pt 6.5:
- replacing a buncha old proc_holders that have been updated to reduce some errors. sub 900 baby

* kills proc_holder pt 6.75:
- minor fixes

* kills proc_holder pt7:
- cuts down on some errors
- refactors some wiz events

* kills proc_holder pt 7.5:
- malf ranged modules
- some minor errors

* kills proc_holder pt 7.75:
- mor eminor error handling, cleaning up changes

* kill proc_holder pt8:
- refactors spell book
- refactors spell implant
- some more minor error fixing

* kill proc_holder pt 8.5:
- scan ability

* Adds some robust documentation

* kill proc_holder pt9:
- converts some / most mutations over

* kill proc_holder pt10:
- sort out all the granters
- refactor them slightly
- fix some compile errors

* Some set-unset sanity - going to need to test removing Share()

* Removes transfer actions. It doesn't seem to do anything.
- Transfer_actions was called when current = new_character so locially speaking the early return in Grant() should cause it to NOOP. Test this in the future though

* Removes sharing from actions, docs actions better

* Some better documentation for spell and spell components

* Kills proc_holder pt11:
- Finally finishes ALL THE SPELLS IN THE SPELL FOLDER
- Fixes some more errors

* kills proc_holder pt11.5:
- minor error fixing and sanity

* Method of sharing actions. Can be improved  in the future, needs testing

* Implements a way to update the stat panel entry for a spell. Also gets rid of VV stuff, as you can update the bigflags directly in VV now.

* Curse of madness bug I put in.

* kills proc_holder pt12:
- sub 500 errors!
- converts cytology mobs
- converts and refactors spiders slightly
- some minor fixing around the place as usual

* kill proc_holder pt13
- Finishes heretic spells
- Sub 300 errors!
- some touch refactoring to account for mansus grasp

* kills proc_holder pt14:
- revenant
- minor bugfixing for heretic stuff

* kills proc_holder pt14.5:
- some missed stuff for revenant + heretic

* kills proc_holder pt15:
- alien abilities
- more minor fixing
- sub 100 errors. The end is nigh

* kill proc_holder pt16? 17:
- Finishes cult spells
- sub 50 errors!
- refactors the way charge works
- renames / moves some signals

* kills proc_holder pt final:
- sdql spells
- no more errors!

* Bugfixes round 1

* Various bugfixing
- documentation done
- give spell works
- can cast spell gives feedback conditionally
- is available takes into account casting ability

* Some accidental reversions + fixes

* Unit tests

* Completely refactors jaunting
- All bloodcrawling is now handled on the action itself instead of across various living procs
- slaughter demons have their own blood crawls
- jaunting dummies don't have side effects on destroy() anymore

* Wizard spell logging and even more refactoring

* Automatic changelog generation for PR #67083 [ci skip]

* Turns select prison intercoms to normal ones. (#68108)

Changes intercoms that would only ever be utilized by sec from prison intercoms (transmit wire is cut) to normal intercoms.

The warden now has both a normal intercom and a prison one.

* Automatic changelog generation for PR #68108 [ci skip]

* Re-adds Standard Kitchen Fridge to IceBox (#68075)

I fucked up and forgot this one that contains eggs and milk and stuff whoops.

* Automatic changelog generation for PR #68075 [ci skip]

* Removes the superfluous breathing mask from the survival box of clown/mime + New mime hugbox. (#67621)

* Base box changes

* Mime box + breathing mas removal

* Mime hugbox back in

* Fishing is back

* Automatic changelog generation for PR #67621 [ci skip]

* Automatic changelog compile [ci skip]

* Furry Pride with no Removal (#68125)


About The Pull Request

image
art from @MrDoomBringer
adds this furry pride spray without removal
Why It's Good For The Game

Same as #68077, just with out removal
image
Requested by maintainers in #68120
Changelog

cl
add: Furry Pride large spraypaint added to spraycans
/cl

* Automatic changelog generation for PR #68125 [ci skip]

* Adds Preferences To Suppress Ghost Role Rolls (#68102)

Hey there,

Ever since November of 2021, I've wanted something where I could simply not get any ghost roles while adminned. Some people also do not want to get any ghost rolls whatsoever when they play, for it is their personal preference. This PR seeks to resolve both of these issues with two new preferences.

The first preference will show up to everyone, Suppress All Ghost Rolls. It will return on the main proc that pops up the window, does the sound, all that. You will not hear a peep of a word out of your game. This is dangerous if you like playing as ghost roles, but if you abhor the thought of it... it's just for you.

The second preference is for admins. You can selectively suppress ghost roles while adminned. This is useful because when you're running an event or doing stuff where you need to offer multiple ghost roles (or you need to focus on a ticket and someone is spamming Xenobiology mob spawns), this is absolutely perfect for suppressing. Same return as the player option, but it checks to see if you are currently adminned via the client.holder variable. This is just because some admins (i'm some admins) don't want to turn in on just in case they forget to turn it off down the line because they actually play the game (lying).

There's probably a much cleaner way to do this code-wise, but I couldn't figure it out. Any help is appreciated. I tested it extensively on my local (even using a guest account), and everything seems to work rather nicely after about an hour of trial-and-error.
Why It's Good For The Game

Players who want to just alt-tab or maybe chill in deadchat (or have an extreme loathing of ghost roles) can just simply not get any of that. Admins who want to focus on tickets and not have windows pop up to interfere in good administrative work (and be the most annoying thing in the world) can also do that. Everyone is happy.
Changelog

cl
qol: There is now a new preference in Game Preferences, Suppress All Ghost Rolls. If you tick this preference, you will not get a singular window pop-up whenever a Ghost Role is available. Intended for the few who really do need it.
admin: Admins get another additional preference where Suppress All Ghost Roles only works while they are currently in an adminned state. They will still get ghost rolls normally when they are in a deadminned state.
/cl

* Automatic changelog generation for PR #68102 [ci skip]

* Removes counter-intuitive var edits off Kilo's SM's pumps (#68132)

This isn't used on any other station, pressure_checks = 0 means that both Internal and External pressure targets start Off for the vents as opposed to External being on like it normally is at roundstart. This can have pretty bad drawbacks if the air alarm is set last as often recommended on most guides.

Not even sure what the External target being set to 140 is about.

Kilo's SM is now consistent with other stations', its pumps external target will no longer start Off.

* Automatic changelog generation for PR #68132 [ci skip]

* Maids in the Mirror take no damage from ghosts examining them (#68122)

* maids in the mirror take no damage from ghosts

* dead players in their mob shouldn't hurt either

* Automatic changelog generation for PR #68122 [ci skip]

* Automatic changelog compile [ci skip]

* Fixes crystalizer runtime (#68143)

fixes crystalizer passing any item as the user

* Automatic changelog generation for PR #68143 [ci skip]

* Crew starts with the right amount of breathing mask again (#68153)

removes unnecessary codepiece

* Automatic changelog generation for PR #68153 [ci skip]

* I'm Fucking Stupid - Actually Adds Eggs+Milk To IceBox (#68146)

WHY DOES THIS KEEP HAPPENING TO ME THERE'S LIKE FIFTEEN THOUSAND KITCHEN CABINETS WITH THE WORSE NAMES ON THIS PLANET EARTH AND I KEEP THINKING I HAVE THE RIGHT ONE BUT IT'S NEVER THE RIGHT FUCKING ONE

I also added a milk carton to the kitchen itself, as a reminder.

[x] i did test this time

* Automatic changelog generation for PR #68146 [ci skip]

* Pluoxium can now heal oxygen damage (#67990)

Pluoxium simply doesn't have much unique interaction beside requiring less partial pressure. This pr simply makes it more unique than being a better oxygen

* Automatic changelog generation for PR #67990 [ci skip]

* Completely rewrites the orbit screen (#68054)

I set about refactoring Orbit.js when I just decided to scrap it and maybe add in some different functionality.

This PR:
- rewrites orbit from the ground up in typescript
- color coded list + scrollable + wider
- adds some styling and effects to gauge "threat": icons change, buttons change color
- fixes button text overflow
- fixes issue where scrolling hides the search header
- fixes similar antags being grouped separately (nukie and nukie leader, etc)

* Automatic changelog generation for PR #68054 [ci skip]

* Fixes some cases which references are used in trait sources, potentially causing hard deletes (#67974)


About The Pull Request

Fixes some cases in which actual references were used in trait sources instead of keys (or ref() keys).

This can cause some rare and difficult to find hard deletes.

Trait sources should be a string key relating to the source of it, not an actual reference to what added it. References within trait sources are never handled in Destroy(), because it's not expected behavior, meaning it can cause hanging references.

So, I went through with a regex to find some cases and replaced them.
I used the following and just picked through the few by hand to find erroneous ones.
ADD_TRAIT\(.+, .+, [a-z]+\)
REMOVE_TRAIT_TRAIT\(.+, .+, [a-z]+\)
Why It's Good For The Game

Less hard deletes, probably.
Changelog

cl Melbert
code: Some traits which mistakenly were sourced from a hard reference are no longer.
/cl

* Automatic changelog generation for PR #67974 [ci skip]

* Automatic changelog compile [ci skip]

* Remove move and combat mode from the stat tab (#68150)

* Automatic changelog generation for PR #68150 [ci skip]

* Replace a statbrowser verb call with send message (#68151)

* Automatic changelog generation for PR #68151 [ci skip]

* Refactors canister damage calculation (#68142)

I think i managed to keep the old temp calculation one-to-one. Also added a currently unused ignore. Just to make the system more robust.

Temp calculation: Code nice :)
refactor: Generalized how the damage calculation is made in cans, pumps, and scrubbers. No significant gameplay changes

* Automatic changelog generation for PR #68142 [ci skip]

* Remove lights/signs in burn chambers (#68141)

Removes four lightbulbs from burn chambers on icebox and kilo ordinance, total.
Removes one mask sign from burn chamber of icebox atmos turbine.

They just burn when the chamber is lit so there doesn't seem to be a point to them.

* Automatic changelog generation for PR #68141 [ci skip]

* Adds windup autofire functionality. The future is now. (Later) (#67911)

Pulls the wind up autofire functionality from my energy weapon pr as a standalone code improvement.

* Automatic changelog generation for PR #67911 [ci skip]

* Fixes a big oversight with steal guns objective (#68093)

* Automatic changelog generation for PR #68093 [ci skip]

* Revert "Makes supermatter dusting independent of the reference frame." (#66491)



Reverts #66395
Can we not have supermatter launching murderbones? This was merged with 0 comment or discussion from the maintainer, with a literal 1 word "Why it's good for the game section". The PR was opened literally like 3 minutes after a discord discussion on why doing that would be a fucking bad idea

cl
balance: The supermatter running into you is no longer just as deadly as you running into the supermatter.
/cl

* Automatic changelog generation for PR #66491 [ci skip]

* little fixes

* gene

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: tgstation-server <tgstation-server@tgstation13.org>
Co-authored-by: Changelogs <action@github.com>
Co-authored-by: Jeremiah <42397676+jlsnow301@users.noreply.github.com>
Co-authored-by: Aleksej Komarov <stylemistake@gmail.com>
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
Co-authored-by: Pepsilawn <reisenrui@gmail.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: skylord-a52 <skylord-a52@users.noreply.github.com>
Co-authored-by: 鈥甶ttaG ordnasselA <974661+Hamcha@users.noreply.github.com>
Co-authored-by: private-tristan <54422837+private-tristan@users.noreply.github.com>
Co-authored-by: Ebb-Real <95765134+Ebb-Real@users.noreply.github.com>
Co-authored-by: Rhials <Datguy33456@gmail.com>
Co-authored-by: Coffee <CoffeeDragon16@gmail.com>
Co-authored-by: 13spacemen <46101244+13spacemen@users.noreply.github.com>
Co-authored-by: SMOSMOSMOSMOSMO <95004236+SmoSmoSmoSmok@users.noreply.github.com>
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Son-of-Space <63861499+Son-of-Space@users.noreply.github.com>
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: ArcaneMusic <41715314+ArcaneMusic@users.noreply.github.com>
Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com>
Co-authored-by: Profakos <profakos@gmail.com>
Co-authored-by: RandomGamer123 <31096837+RandomGamer123@users.noreply.github.com>
Co-authored-by: dragomagol <66640614+dragomagol@users.noreply.github.com>
Co-authored-by: tattle <article.disaster@gmail.com>
Co-authored-by: castawaynont <76170211+castawaynont@users.noreply.github.com>
Co-authored-by: Paxilmaniac <82386923+Paxilmaniac@users.noreply.github.com>
Co-authored-by: IndieanaJones <47086570+IndieanaJones@users.noreply.github.com>
Co-authored-by: Andrew <mt.forspam@gmail.com>
Co-authored-by: Pickle-Coding <58013024+Pickle-Coding@users.noreply.github.com>
Co-authored-by: Y0SH1M4S73R <legoboyo@earthlink.net>
Co-authored-by: cinder1992 <cinder1992@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
Co-authored-by: Comxy <tijntensen@gmail.com>
Co-authored-by: Salex08 <33989683+Salex08@users.noreply.github.com>
Co-authored-by: Sebbe9123 <31856346+Sebbe9123@users.noreply.github.com>
Co-authored-by: GuillaumePrata <55374212+GuillaumePrata@users.noreply.github.com>
Co-authored-by: Nichlas Pihl <nichlas0010@gmail.com>
Co-authored-by: ReinaCoder <83892995+ReinaCoder@users.noreply.github.com>
Co-authored-by: OrionTheFox <76465278+OrionTheFox@users.noreply.github.com>
Co-authored-by: chesse20 <chesse20@gmail.com>
Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
Co-authored-by: oranges <email@oranges.net.nz>
Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
Co-authored-by: FinancialGoose <92416224+TheBoondock@users.noreply.github.com>
Co-authored-by: Fikou <23585223+Fikou@users.noreply.github.com>
Co-authored-by: NotZang <90739573+NotZang@users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
Co-authored-by: lizardqueenlexi <105025397+lizardqueenlexi@users.noreply.github.com>
Co-authored-by: Charlotte <98856144+orthography@users.noreply.github.com>
Co-authored-by: magatsuchi <88991542+magatsuchi@users.noreply.github.com>
Co-authored-by: vincentiusvin <54709710+vincentiusvin@users.noreply.github.com>
Co-authored-by: Mooshimi <85910816+Mooshimi@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Fix Rewrites a bug so it appears in different circumstances Verified 鉁旓笍 Yeah, i'm a coder. What about it?
Projects
None yet
4 participants