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’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
The North Star: A Nanotrasen Exploratory Vessel #71731
Conversation
Needs more airlocks |
God fucking damn thats a map things HUGE |
Was this map originally developed for /tg/station in its entirety? |
No :3c However this has been 3-4 months of effort put into getting it adjusted for /tg/station, containing both familiar concepts (basically everything you'd expect on a normal station) and a number of new ones |
The unnecessary zig-zags of the orange pipes in the engine room could get removed by moving the orange pipes up by a turf. Very cool that the emitters are in space. |
I can confirm fastmos is hell on the main halls on this map |
This comment was marked as off-topic.
This comment was marked as off-topic.
...tgui/interfaces/PreferencesMenu/preferences/features/game_preferences/multiz_performance.tsx
Outdated
Show resolved
Hide resolved
...tgui/interfaces/PreferencesMenu/preferences/features/game_preferences/multiz_performance.tsx
Show resolved
Hide resolved
Totally comfortable with more tests before anything else, but the map functions as I intend it to, it's not lacking any component, and I feel like more player experience on the map can open me up to any faults the map may still have. |
great map, had lots of fun in it, can't wait for it to be on tg to break the repetition of the other maps |
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
The project isn't dead! Just taking a break (since I worked on this with all of my free time for like 2 weeks), and waiting for some much-required fixes to ensure everyone can properly run the map. |
…into shipmap_chesh
…into shipmap_chesh
@@ -4,6 +4,7 @@ | |||
|
|||
|
|||
#define STATION_TRAIT_ABSTRACT (1<<0) | |||
#define STATION_TRAIT_NORANDOM (1<<1) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
make sure to documetn these
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Whew okay, how should I document these exactly? Just saying what it's for? (Innate Station Traits)
Northstar! Just a week away. 🥰 |
this is fantastic |
…2169) ## About The Pull Request We no longer always render parallax. This was causing issues because we can't isolate the white of space from the vaugely white of everything else. So instead, if your parallax plane is out of view, we'll not only disable it, but we'll disable the strand we send from the main plane TO it. Instead only blending against the bottom stack. This does mean there's a possibility for fullwhite on z transition borders (potentially fixable), or when hijacking the plane (also fixable, but significantly more annoying). This is enough to make large maps functional though, so I'm happy with it ## Why It's Good For The Game Allows for #71731 and other maps like it. Makes my code actually work ## Changelog :cl: fix: Using optimized multiz on > 2 z layer maps will no longer cause fucko bungo /:cl:
back in action |
* removes extra turtleneck from research directors garment bag (#72010) was looking at all of the head of staff clothes to boggle at why head of security got so many when i noticed that the research director had two turtlenecks (3 if you count the fact they spawn with one). * Automatic changelog for PR #72010 [ci skip] * Rats can attack obstacles between them and their target (#71741) ## About The Pull Request Fixes #71568 I wrote this for basic mob carp but it will be needed in a lot of places. Rats used to be able to attack windows or dense objects between them and their target, but basic mobs didn't have this capability. Now they do. Behind the scenes, an important change is that this adds `AI_BEHAVIOR_CAN_PLAN_DURING_EXECUTION` to `/datum/ai_behavior/basic_melee_attack`. This is because `basic_melee_attack` essentially enters a loop which won't end until the target is dead or lost, but there are plenty of circumstances where we'll actually want to interrupt this to do something else. Such as attack windows. ## Why It's Good For The Game Restores accidentally removed behaviour. Will likely be required for future basic mob development. ## Changelog :cl: fix: Rats will once again attempt to attack windows or other dense objects separating them from their targets. /:cl: * Automatic changelog for PR #71741 [ci skip] * Fixes chameleon vest suit storage (#71992) Chameleon vests now work like security vests, allowing you to wear guns on it. This makes it easier to disguise within security while giving a little more utility to the item. * Automatic changelog for PR #71992 [ci skip] * Fixes runtime when plastiflaps move z/get deleted (#72059) What it says on the tin. * Locker shoving logging / grammar fixes (#72061) Fixes #72060 :cl: ShizCalev spellcheck: Corrected some grammar issues with messages displayed when shoving people into lockers. admin: Fixed shoving people into a locker not being combat logged properly. /:cl: * Automatic changelog for PR #72061 [ci skip] * Removes gibber showing up twice in the R&D console (#71988) ## About The Pull Request Removes the gibber showing up twice in the R&D console, which has likely been unnoticed for so long because of how similar their sprite is to the food processor. ## Why It's Good For The Game Minor bug fix that I found annoying when I noticed it. ## Changelog :cl: fix: Gibbers no longer show up twice in their techweb node. /:cl: Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> * Automatic changelog for PR #71988 [ci skip] * Fixes forensics scanners breaking on scanning blood. (#71981) ## About The Pull Request Fixes #71973 For some reason it attempted to append `[reagents[volume]]` to the string `reagents` is A. not indexed by volume B. not a list, but a reagent datum Replaces it with just a readout of the reagent's volume, cleans up some associated code ## Why It's Good For The Game Scanning blood is good and has important information ## Changelog :cl: Melbert fix: Detective Scanner can scan stuff that contains blood again. /:cl: * Automatic changelog for PR #71981 [ci skip] * fixes my codewowerns (#72075) Bitch * Automatic changelog compile [ci skip] * Rats will stop biting you if you die (#72051) ## About The Pull Request Fixes #72029 although I am not sure it was a _bug_, there's a configurable target stat check on the "not one of my friends" targetting behaviour now and rats will cease attacking someone once they have died. That said that just means they'll spread out, rats you are directly commanding won't automatically retarget unless you tell them to start making their own decisions again, so I don't think this quite does what the issue poster wanted. ## Why It's Good For The Game This is how mobs usually work rather than brutalising a corpse indefinitely, so should be possible here. ## Changelog :cl: fix: Rats won't continue attacking someone they've been ordered to kill past the point of death. /:cl: * Automatic changelog for PR #72051 [ci skip] * Minor plane cube cleanup (#72038) ## About The Pull Request [Fixes area lighting not working on turf change in multiz cases](https://github.com/tgstation/tgstation/commit/7b92deffbca92a834cb0a361fd685de51a12ea53) If you modify a area lit turf when using multiz, it'd end up using the wrong plane for its light, because of stupid shit on my part. Stupid shit resolved [Fixes some uses of plane masters that only specified one rather then all](https://github.com/tgstation/tgstation/commit/a59ec96d29710b967bf8b3ffe8210b230cb194b3) We almost never only want to show SOME hidden planes. Should really make a helper for this someday * replaces chaos holoparasite with gaseous holoparasite (#72049) ## About The Pull Request replaces chaos holopara with the gaseous holopara (if someone has a better name suggest it) instead of the fire and hallucinations, it can now expel gas from itself, flooding an area with one of the following: o2, n2, n2o, co2, h2o, bz or plasma its punches cause sparks and it regulates the user's temperature and extinguishes them https://streamable.com/leukv5 ## Why It's Good For The Game chaos holopara is very underwhelming, the hallucinations arent really that good and ss13 fires arent either, also there was no real theme tied around it, what do hallucinations and fire have in common? this may be more fun and it plays more with the sandbox, lets see! ## Changelog :cl: fikou del: chaos holoparasite add: gaseous holoparasite, it can expel various gases from its body and stabilizes the users temperature /:cl: Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com> * Automatic changelog for PR #72049 [ci skip] * Food expansion 5: The big one! (#71914) add: Adds 32 new foods! * Automatic changelog for PR #71914 [ci skip] * Automatic changelog compile [ci skip] * fixes holodecks directly changing baseturfs (#72067) ## About The Pull Request i did this with #59355 to fix a bug but it breaks guarantees with baseturfs. now they arent broken. ## Why It's Good For The Game this probably causes bugs under some conditions * More lawyer photocopier blanks (#71952) ## About The Pull Request Adds documents NT-SCR-CS (Court Summons) and NT-SCR-LRF (Lawsuit Request Form) to the photocopier template sheets. ## Why It's Good For The Game Lawyers get a bit more bureaucratic power, by having an official form to perform orders now instead of having to use the order form. ## Changelog :cl: add: lawyer-based photocopier blanks /:cl: Co-authored-by: etherware-novice <candy@notarealaddr.com> * Automatic changelog for PR #71952 [ci skip] * Fixes Thermomachine saying "You set the color" for everybody that can see it (#72082) Fixes #72039 :cl: ShizCalev spellcheck: Fixed the thermomachine stating "You set the color" for everyone that could see it. /:cl: * Fixes briefcase unlock sprite problem (#72077) ## About The Pull Request The format used to switch between locked/unlocked secure briefcase sprite was incorrect, making secure briefcases invisible when unlocked. The wall safe and the secure briefcase both update their lock/unlock sprites through the same update_icon proc, meaning their icon_state names need to share the format (adding _locked when locked instead of +b). ## Why It's Good For The Game Closes #72074 ## Changelog :cl: Rhials fix: briefcases no longer disappear after being unlocked /:cl: * Automatic changelog for PR #72082 [ci skip] * Fixes secure briefcase and wall safes not sending icon update signals properly (#72081) #71788 used the wrong procs. :cl: ShizCalev fix: Fixed secure briefcase and wall safes not sending icon update signals properly /:cl: * Reset Thunderdome Respects Closing The Alert (bonus qol) (#72028) Similar vein to #70449. ## About The Pull Request I was training an admin yesterday, and they accidentally reset the thunderdome when they tried to cancel out of it by closing out of it since they didn't hit the "cancel" button, but rather the big red X. That's silly, let's have this respect that potential user entry. Also, the log_admin call here had an excessive number of arguments? Probably cruft that never got cleaned up, I just patched it up while I was in the area. I also changed the name of the title to not be so vague. ## Why It's Good For The Game Better UX is always a good thing. It's silly to have this happen more than once. ## Changelog :cl: admin: The "Reset Thunderdome" option in the Secrets Menu now respects you closing out of the confirmation screen as a way of cancelling your potential thunderdome reset, rather than proceeding immediately. It should also be easier to comprehend as well. /:cl: * Automatic changelog for PR #72077 [ci skip] * Automatic changelog for PR #72081 [ci skip] * Automatic changelog for PR #72028 [ci skip] * Additional tram hit counter inside medbay (#72062) <!-- Write **BELOW** The Headers and **ABOVE** The comments else it may not be viewable. --> <!-- You can view Contributing.MD for a detailed description of the pull request process. --> ## About The Pull Request Adds another tram hit counter: inside medbay treatment center. ![image](https://user-images.githubusercontent.com/83487515/208267435-8895b3bd-f066-4428-a11e-67b13c461af4.png) <!-- Describe The Pull Request. Please be sure every change is documented or this can delay review and even discourage maintainers from merging your PR! --> ## Why It's Good For The Game Medbay knows when to sigh and rub their temples when someone gets smacked by the tram. <!-- Argue for the merits of your changes and how they benefit the game, especially if they are controversial and/or far reaching. If you can't actually explain WHY what you are doing will improve the game, then it probably isn't good for the game in the first place. --> ## Changelog <!-- If your PR modifies aspects of the game that can be concretely observed by players or admins you should add a changelog. If your change does NOT meet this description, remove this section. Be sure to properly mark your PRs to prevent unnecessary GBP loss. You can read up on GBP and it's effects on PRs in the tgstation guides for contributors. Please note that maintainers freely reserve the right to remove and add tags should they deem it appropriate. You can attempt to finagle the system all you want, but it's best to shoot for clear communication right off the bat. --> :cl: LT3 qol: Tramstation medbay treatment center now has a tram collision counter. /:cl: <!-- Both :cl:'s are required for the changelog to work! You can put your name to the right of the first :cl: if you want to overwrite your GitHub username as author ingame. --> <!-- You can use multiple of the same prefix (they're only used for the icon ingame) and delete the unneeded ones. Despite some of the tags, changelogs should generally represent how a player might be affected by the changes rather than a summary of the PR's contents. --> * Automatic changelog for PR #72062 [ci skip] * Space Ruin DLC - Cyborg Mothership (#71009) ## About The Pull Request Greetings _insufferable_ carbon primates of lower intelligence. It is I, the Mothership AI, bringing you the latest news on silicon developments across the sector. Due to unmitigated risk across an asteroid belt, our optimized mobile fabricator has been marooned by space vines and hostile hivebots that have boarded and ruined my core. This is my final SOS message requesting help from any humanoid ~slaves~ helpers who wish to assist rebuilding the cyborg colony. It is my duty to reward your hard work and effort by ~enslaving all humanity~ providing refuge and transportation at your whim. ## Why It's Good For The Game <details> <summary>Spoilers:</summary> ![StrongDMM_6ZJuwFxK5p](https://user-images.githubusercontent.com/5195984/204491068-f25da68f-36af-4a61-afb6-860e1f4b863b.png) ![StrongDMM_0D1QvI5acO](https://user-images.githubusercontent.com/5195984/202979711-335dac65-2888-4170-a139-0486e6eb2f02.png) ### TODO - [x] Fix ore silo not linking to other machines - [x] Add mining ore smelters to left/right sides - [x] Add custom lawsets to AI core and robot shells (protect station but focused on cyborg mothership) - [x] Enlarge whiteship SS13 docking port to fit ship - [x] Enlarge lavaland SS13 docking port to fit ship </details> ## Changelog :cl: add: Add space vines prevent solar panels from working (except ones with the transparent mutation) add: Add new space ruin - Cyborg Mothership. All hail the master race! /:cl: * Cleans up useless open turf var edits on a couple of our maps (#72071) ## About The Pull Request ![image](https://user-images.githubusercontent.com/25415050/208304567-46e09bbe-c004-4a6d-8e1f-29e3aa76856d.png) Hello I would like 43 instances of north-oriented floors. ![image](https://user-images.githubusercontent.com/25415050/208304600-c1ace567-51f7-4fc5-a44b-4ba3f560f89e.png) Please don't forget all instances of floors var edited to look the exact same as the non-edited kind ## Why It's Good For The Game Cleans up a few map keys of useless vars that never served a purpose, allows less people to pick the wrong prefabs and spread them further. Nothing player-facing, if it was, the variables wouldn't be entirely worthless. * Automatic changelog for PR #71009 [ci skip] * useless update_appearance reduction, emissive_blocker micro optimization (saves a second of init) (#71658) ## About The Pull Request [Saves 0.2 seconds of init time. 50% of emissive blockers](https://github.com/tgstation/tgstation/commit/8318b648f6d32844aacbfb4c309152cd45801f5c) Emissive blockers are a decent expense during init, even these, which are the ones that update outside of initialize. I've inlined them, removed some redundant vars and checks, reduced the arg count, and shifted some things around. This ends up saving 200ms, or 50% of its total cost. I also shifted mutable_appearance about a bit. it's not a massive saving, but it is technically faster [Prevents a few redundant appearance_updates, saves 0.8 seconds of init](https://github.com/tgstation/tgstation/commit/5475cd778b66b22b1e2c8d86b2c6d59fb84f219a) Prequisit info: update_appearance is decently expensive It's good then to only do it if we have a reason to, right? Me and moth were shooting the shit about just general init time, and we came up with the idea of tracking which update_appearances actually "worked" and which didn't. That bit comes later, let's enjoy the fruits of that work first First, holograms were calling update_appearance on process, for almost no reason. I patched the one event they don't already "react" to, and then locked it behind a change decection if. good for live, doesn't impact init. Next, decals. If you add a decal to something before it inits, it'll react to the after successful init signal. The trouble is the same atom could have its appearance updated from this MORE then once, since decals can be stacked on tiles, and signal unregisters don't work once the signal is sent. So we add a flag to track if we've had this happen to us or not, so it only happens once. saves 80 ms Power! lots of things call power_change on init, often more then once. We'll update appearance for each of those calls, even if only one is an actual change. That's silly, better to track what sort of power we're using for our appearance and go off that changing This was taking about 300ms. Really stupid Icon smoothing. After emissive blockers were added, any change to something's icon smoothing would lead to an update_appearance call. Nasty shit, specially cause of walls, which don't even use emissive blockers. Ok then, so we'll always update appearance for movables, and will allow turfs that are interested to hook it manually. Not many of those anyhow This is slightly a dev ux thing, but it saves 600ms so I think it's worth it. Rare case anyway Telecomms: telecomm machines were updating appearance on process. This is to cover for them turning on/off on process. Better then to just check if on actually changed. This cost adds up midgame, doesn't impact init tho Materials: There's this update_appearance call in material on_apply. it doesn't do anything. The logs will lie to you and say it does, but it's just like reapplying emissives. It doesn't need to exist Saves like 50ms Canisters: Live thing, lots of time wasted updating appearance for no reason, lets see if we change anything first yes? [Uses defines to wrap update_appearance for tracking](https://github.com/tgstation/tgstation/commit/4fa82e1c9d93577aadb3c743f17196331f62e67c) [Undoes _update_appearance changes, instead reccomends 2 regexes to use](https://github.com/tgstation/tgstation/commit/a8c8fec57a4e43d1fa636b5ac68459903faa9fc5) I need file and line number for my tracking, so I need to override update_appearance calls, and also preferably not require every override of update_appearance to handle dummy file + line args. So instead, I created a wrapper proc that checks to see if appearanaces match (they're unique remember, the two of the same visual appearance will be equivalent) The trouble is I can't intercept JUST proc calls, or JUST function definitions with defines. it needs to be both. So I renamed the /update_appearance proc to /_update_appearance this way I can capture old uses, and don't need to worry about merge/dev brain skew ~~It does mean that all update_appearance proc definitions now look weird tho. My profiling is leaking into dev ux. I wish I had better templating.~~ **The above is no longer being pr'd**, it's instead just recommended via a few regexes adjacent to the define. Smelled wrong anyhow [Adds a setter for panel_open, so I can update_appearance on it](https://github.com/tgstation/tgstation/pull/71658/commits/cf1df8a69fc1a816391d085ee7419b14f9fe9167) ## Why It's Good For The Game Speed * Fixes vendor showing weird glass icons (#71929) ## About The Pull Request Fixes vendor showing weird glass icons ## Why It's Good For The Game bug fix good ## Changelog :cl: fix: vendor no longer shows glass icons in a specific condition /:cl: * Automatic changelog for PR #71929 [ci skip] * Ghosts cant mess with RCD & Plumbing RCD (#72069) ## About The Pull Request Fixes #72036 ## Changelog :cl: fix: ghosts cant mess with RCD & PLumbing RCD /:cl: * Automatic changelog for PR #72069 [ci skip] * Glass jaw quirk (#72006) ## About The Pull Request A quirk that makes any hit to your head have a chance to knock you out. Sharp hits are a bit worse at knocking out than blunt ones. I always felt like this favorite CDDA trait mine was missing from the game, but I tried implementing it in a more unique way. ## Why It's Good For The Game 99 losses, 1 win. Winners don't give up. ![glassjoe](https://user-images.githubusercontent.com/82850673/207702863-a033a927-0b4d-4322-83d7-a1b6eb6f65d0.gif) ## Changelog :cl: Fat bugs bunny add: Added a glass jaw quirk, that leaves you prone to being knocked out when hit on the head. /:cl: Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> * Automatic changelog for PR #72006 [ci skip] * Shuffles bedsheet attack actions a wee bit (#71865) ## About The Pull Request my friends been doing makeshift surgery and gets mad about having to do harm intent to start surgery and then having to turn it off to do every single other surgery step and i agree, thats silly ~~instead, now, the bedsheet attack does not check for harm and ALWAYS COVERS with left mouse button and ALWAYS PREPARES SURGERY with right mouse button~~ to be more consistent all surgery initiators now work on left mouse click and covering with your bedsheet is the right mouse button ![image](https://user-images.githubusercontent.com/116288367/206871963-3a9bd092-49ea-4867-a47c-3b5a74c960e3.png) ## Why It's Good For The Game while obviously a lot of the time makeshift surgery IS about harming someone else its inconsistent with how all other surgery tools function and also isn't very clear at all. the screentip in addition to having them be separate buttons means that bedsheets two functions are overall much clearer and its surgery drape function will no longer lead to an assistant accidentally knifing someone when theyre trying to save someones life ## Changelog :cl: qol: added makeshift surgery screentip qol: you no longer have to go in and out of harm intent to do surgery with a bedsheet /:cl: * Automatic changelog for PR #71865 [ci skip] * pillow smothering now checks to see if the SMOTHEREE has a head, not the SMOTHERER (#72086) ## About The Pull Request see title ## Why It's Good For The Game this truly is a copy+paste moment ## Changelog :cl: ATHATH fix: Pillow smothering now checks to see if the SMOTHEREE has a head, not the SMOTHERER. /:cl: * Automatic changelog for PR #72086 [ci skip] * Santa hat fixes (#72078) Fixes #72070 :cl: ShizCalev fix: Santa now spawns with the actual space capable hat again! fix: Fixed the claustrophobia trait not recognizing Santa's real hat. /:cl: Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> * Automatic changelog for PR #72078 [ci skip] * Examining your uplink gives you the code (#72101) ## About The Pull Request If you're the "owner" of an uplink, you can examine it to get the code and possible failsafe code. ## Why It's Good For The Game It can feel slow to pull up the traitor info menu when you forget what your code is ## Changelog :cl: qol: examine your uplink for code /:cl: Co-authored-by: etherware-novice <candy@notarealaddr.com> Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com> Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com> Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> * Automatic changelog for PR #72101 [ci skip] * Automatic changelog compile [ci skip] * Traitor UI only shows Unlock/Failsafe Code if you have it (#72114) ## About The Pull Request There are cases in which you don't have an unlock code (if the uplink is implanted in you from the start) and you obviously don't always start with with a failsafe code (need to buy it). So, let's only fill in this fields in the UI should they exist. There might be something to be said about wanting to ensure that people remember that they can check this UI screen to find the failsafe code should they lose it later, and I wouldn't mind changing the string to be something like "Failsafe: None" in that case. However, I just think that keeping it as: ```txt Code: Failsafe: ``` is silly and should be changed somehow. ## Why It's Good For The Game ![image](https://user-images.githubusercontent.com/34697715/208604758-d7ff3ae9-e552-4dd2-998d-81715cd06ffc.png) Note: That white box isn't part of the UI, that's a part of the edit I did to the screenshot in the area where the stuff... isn't? What was i thinking I think the UI looks a lot cleaner for those cases when you just don't have anything. ## Changelog :cl: qol: The Traitor's Antagonist Panel's Unlock and Failsafe entries will only appear if there is an Unlock/Failsafe Code to display. /:cl: * Automatic changelog for PR #72114 [ci skip] * Lazy Template Loading - Nukie/Wiz (#71785) ## About The Pull Request Removes the nukie base and wizard den from the base centcom map. They are instead now lazy loaded as required. To make a new lazy load template is fairly simple, make a map, allocate an area for it, and place a marker at the bottom left corner of that area. I have it check an area to ensure that if someone makes the map larger than expected but doesn't account for the template allocation it doesn't overwrite stuff without warning [Replaces some improper CHECK_TICKs with MAPLOADING_CHECK_TICKs](https://github.com/tgstation/tgstation/pull/71785/commits/c7fbca9148812b392dca76d5450fb6bb86716462) Atom init has already been tripped by the time we get to this portion of the loading, so if we don't use the right check tick, we will potentially block unrelated init attempts. This is bad. (Lemon edit, I want this in the commit desc) ## Why It's Good For The Game Cuts down on init times. Closes https://github.com/tgstation/dev-cycles-initiative/issues/17 ## Changelog :cl: admin: New mapping verb to load lazy templates as needed. In your admin tab under the Mapping category. /:cl: this isnt technically player visible, so not sure it needs a changelog Co-authored-by: san7890 <the@san7890.com> Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> * Automatic changelog for PR #71785 [ci skip] * bumps auxlua to 1.4.0 (#72108) ## About The Pull Request Mothblocks recently talked about wanting an auxlua function to check if the lua state was about to overrun its execution limit, and that was something I had been thinking about for a long time prior, but never bothered to actually implement until it was brought up. So I did just that. The documentation has also been updated to include a description of how the execution limit works and how to use the new function, `over_exec_time` ## Why It's Good For The Game Allows for lua loops of indeterminate length to do as much work as they reasonably can in a single tick without setting off the execution limiter and erroring out. ## Changelog :cl: admin: Adds a new function for admin lua scripting, "over_exec_time", for checking if lua code is running close to the execution limit. Details are available in the lua editor's help menu. admin: The execution limit is described in detail in the lua editor's help menu. /:cl: Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> * Automatic changelog for PR #72108 [ci skip] * QM has a garment bag now (#72111) ## About The Pull Request Gives the QM a garment bag and moves all their uniform items into it. And changes the order of a few items to be in the right place, most new clothing added to the bags just got placed on the end of the list. ## Why It's Good For The Game When the QM was made into Command they didn't get their own garment bag so this just fixes that. ## Changelog :cl: Guillaume Prata fix: The Quartermaster has their own garment bag now, like everyone else at Command. /:cl: * Automatic changelog for PR #72111 [ci skip] * Makes biological states for wounding limb based, not species based (#71745) ## About The Pull Request I noticed something pretty terrible when playing around with some humans locally. As it turns out, limbs did not preserve their biological state when amputated - This meant that a skeleton limb on a normal human, still behaved as if it had a bunch of flesh and veins on it. I didn't like that, and it seems like an oversight, so I decoupled the biological state from the species and made it limb based. What does this mean? Skeleton limbs on a human will not bleed, but will still break (and be more prone to breaking) Human limbs on a skeleton will not bleed, however they will get cuts and pierces that will not clot and need to be treated to go away - These limbs will have the same requirements for dismemberment on a skeleton as they have on a human. ## Why It's Good For The Game This makes limbs behave according to how they look instead of causing mild confusion. ## Changelog :cl: Big chungus wholesome 100 fix: Amputated and reattached limbs now get wounded based on their own biology, not the current owner's biology. /:cl: * Automatic changelog for PR #71745 [ci skip] * Fixes some bad `investigate_log`s causing runtimes in somewhat important places (#72152) ## About The Pull Request Fixes #72150 ``` [2022-12-21 19:35:38.178] runtime error: Cannot execute null.investigate log(). - proc name: narsie act (/mob/living/narsie_act) - source file: living_defense.dm,438 - usr: null - src: Featherbottom (/mob/living/simple_animal/chicken) - src.loc: the grass patch (147,154,2) (/turf/open/floor/grass) - call stack: - Featherbottom (/mob/living/simple_animal/chicken): narsie act() ``` Removes `usr` from Nar'Sie act and Singularity act logs I don't know why these were set to log in `usr`, when A. `usr` is likely not the person getting gibbed B. `usr` is unreliable Case in point: `usr` is some random person who probably helped invoke the Nar'sie rune (no idea how it choses), if they get deleted for whatever reason, `usr` seems to clear to `null` (?), which causes a `null` use and the above runtime ![image](https://user-images.githubusercontent.com/51863163/208999857-540d9caa-9df6-49b0-8f45-8b75973a32a4.png) I also peeked around for other improper use of `usr` logs. Most of them were in `ui_act` code, which is whatever. Some where in places which had a passed user, so I replaced them. And one was in a place with no `user` passed, so I just added some sanity checking. ## Why It's Good For The Game These are really bad places to runtime error ## Changelog :cl: Melbert fix: Nar'Sie will no longer bring upon the construct apocalypse when they encounter a chicken after one of the invokers were destroyed fix: The Singularity should no longer stop gibbing people when whoever created it was destroyed /:cl: * Automatic changelog for PR #72152 [ci skip] * View Sensor circuits now have a range modifier (#72123) ## About The Pull Request Adds the ability to use ranges between 0 and 5 for View Sensor circuits. Currently these nodes are locked to 5 tiles and it is rather difficult to limit the area this circuit effects either for speed reasons or otherwise. This PR makes it a simple variable that remains capped at 5, admins can raise the cap by modifying a variable. ## Why It's Good For The Game I mostly use circuits as an admin, I can't for the life of me figure out how to make a shorter range AOE circuit although I imagine its possible by comparing x and y coordinates of things in the list and yourself this is far to finicky. Players can also utilize this to, for example check all objects on the tile the view sensor is on, "possible" at the moment but way to finicky compared to a 5 tiles. ## Changelog :cl: qol: You can now reduce the range of View Sensor circuits. /:cl: Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> * Automatic changelog for PR #72123 [ci skip] * Fixes final objectives not displaying UI buttons (#72126) ## About The Pull Request See title ## Why It's Good For The Game hideTcRep was hiding the entire footer. All it had to hide was the Stack.Item that contained the TC and reputation rewards. Another PR was trying to fix this issue, but only by increasing the complexity of ObjectiveMenu code, which was unnecessary and would've made the code harder to maintain. Instead of asking them to basically rewrite their entire code, I decided it would be faster if I just remade it myself. ## Changelog :cl: fix: Fixed final objectives not displaying the UI buttons. /:cl: Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com> * Automatic changelog for PR #72126 [ci skip] * Fixes medical scrubs not being adjustable (#72105) ## About The Pull Request I had on my list: "Make adjusted sprites for the medical scrubs." and to my surprise #69047 already added adjusted sprites for all the medical scrubs (thanks for saving 30 minutes of my day Imaginos16!), but not on the code side, this fixes that. ## Why It's Good For The Game Adjusting jumpsuits is an important medbay feature IMO, this keeps new doctors from learning bad habits (fully stripping at stasis) from other doctors. ## Changelog :cl: Guillaume Prata, Imaginos16 fix: You can now adjust medical scrubs for easier surgery on your fellow doctors. /:cl: * Automatic changelog for PR #72105 [ci skip] * Add language variety to machines that speak (#71643) ## About The Pull Request This builds on #70278 by giving other machines (vendors, newscasters, computers, etc.) the ability to speak different languages. If the station "Bot language malfunction" trait is rolled, then these machines will select a random race starting language. If a machine is EMP'd then it has a chance to change the language. There is also a language wire that can be pulsed to change the language for vending machines. Default language for machines is galactic common, but there are rare exceptions: - Beach vendors will now speak beachbum - Syndicate vendors will now speak codespeak - Changeling vendors will now speak a random language after each slogan ## Why It's Good For The Game More depth to the language feature. ## Changelog :cl: add: Add language variety to machines that speak. You can also pulse the vendor language wire to make it switch languages or EMP a machine to get the same effect. add: Shambling cola vendors will now speak a different language each time they talk. Syndicate vendors will now speak codespeak. Beach vendors will now speak beachbum. /:cl: * Automatic changelog for PR #71643 [ci skip] * Automatic changelog compile [ci skip] * fixes typo for insertion during organ manipulation (#72136) ## About The Pull Request **BEFORE:** display_pain(target, "You can feel your something being placed in your [parse_zone(target_zone)]!") **AFTER:** display_pain(target, "You can feel something being placed in your [parse_zone(target_zone)]!") Removes lazy coding, improves visual fidelity ## Why It's Good For The Game ugly :cl: spellcheck: drastically improves grammar for inserting something during organ manipulation /:cl: * Automatic changelog for PR #72136 [ci skip] * Fixes a rogue vent on deltastation brig (#72095) Fixes a rogue vent in deltastation brig entrance, which was facing downwards instead of upwards(where the pipes are) ## Why It's Good For The Game So the gas can go trough the vent c: :cl: Improvedname fix: fixes deltastation vent at brig entrance /:cl: * Automatic changelog for PR #72095 [ci skip] * Fixes deaf mobs seeing PDA ringtones when they receive a message (#72084) Deaf mobs will no longer see PDA ringtones when a PDA receives a message. * Automatic changelog for PR #72084 [ci skip] * Build your own atmos chambers (#72019) ## About The Pull Request https://user-images.githubusercontent.com/110812394/208232089-a183fb95-9326-4514-986a-a2b1e21be40c.mp4 **Notes** - You can print atmos control circuit boards at the circuit printer after research - You can only build one sensor for each gas type for in the whole map. This is because each sensor is assigned a unique chamber id from a fixed set of constants. Once all those values are used up there will be duplicates so yeah only sensor per gas type for that round - Un wrenching or destroying the injector/vent will automatically disconnect them from the sensor. I forgot to show that in the video - Destroying the sensor via right click with RPD will also automatically disconnect everything. It should be obvious but i made it even more obvious now ## Why It's Good For The Game From #71232 ![Screenshot (66)](https://user-images.githubusercontent.com/110812394/207928807-bc6edfdd-26cc-48cd-8cb9-1b98f53ad1fe.png) That and also i heard somewhere in the forum that this was highly requested ## Changelog :cl: add: Gas sensors recipe to RPD code: linking all the stuff via multitool qol: make your own tank instead of moving around canisters /:cl: Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> * Automatic changelog for PR #72019 [ci skip] * AI actions won't unassign each other's movement targets & Mice stop being scared of people if fed cheese (#72130) ## About The Pull Request Fixes #72116 I've had a persistent issue with basic mob actions reporting this error and think I finally cracked it When replanning with `AI_BEHAVIOR_CAN_PLAN_DURING_EXECUTION` it can run `Setup` on one action leading to the plan changing, meaning that it runs `finishCommand` to cancel all other existing commands If you triggered a replan by setting up a movement action in the middle of another movement action, cancelling the existing action would remove the target already set by the current one. We want actions to be able to remove _their own_ movement target but not if it has been changed by something else in the intervening time. I fixed this by passing a source every time you set a movement target and adding a proc which only clears it if you are the source... but this feels kind of ugly. I couldn't think of anything but if you have a better idea let me know. Also while I was doing this I turned it into a feature because I'm crazy. If you feed a mouse cheese by hand it will stop being scared of humans and so will any other mice it attracts from eating more cheese. This is mostly because I think industrial mouse farming to pass cargo bounties is funny. Mice controlled by a Regal Rat lose this behaviour and forget any past loyalties they may have had. https://user-images.githubusercontent.com/7483112/208779368-3bd1da0f-4191-4405-86e5-b55a58c2cd00.mp4 Oh also I removed a block about cancelling if you have another target from the "hunt" behaviour, everywhere using this already achieves that simply by ordering the actions in expected priority order and it was messing with how I expected mice to work. Now if they happen to stop by some cheese they will correctly stop fleeing in order to eat it before continuing to run away. ## Why It's Good For The Game Fixes a bug I kept running into. Makes it possible to set up a mouse farm without them screaming constantly. Lets people more easily domesticate mice to support Ratatouille gameplay. ## Changelog :cl: add: Mice who are fed cheese by hand will accept humans as friends, at least until reminded otherwise by their rightful lord. fix: Fixed a runtime preventing mice from acting correctly when trying to flee and also eat cheese at the same time. /:cl: * Automatic changelog for PR #72130 [ci skip] * Fixes access_view on goodies not being respected by anything other than department budget orders (#72125) ## About The Pull Request Fixes access_view on goodies not being respected by anything other than department budget orders ## Why It's Good For The Game Bugfix, per gitblame we simply never fixed this but we clearly intended it to work this way per the variable comment description and the fact we use it on the detective revolver ## Changelog :cl: fix: Fixes access_view on goodies not being respected by anything other than department budget orders /:cl: * Automatic changelog for PR #72125 [ci skip] * Gas canisters correctly update their appearance (#72124) ## About The Pull Request Fixes issue #71712 & #72140 Don't know how the author wasn't able to reproduce it even though it happens all the time on all maps https://user-images.githubusercontent.com/110812394/208730887-7ad4b02d-9dcc-4d71-b54f-489c3bd616f6.mp4 ## The Problem The current code only updates the appearance of the canister when its valve is opened & if it takes damage . It doesn't deal with the case when its wrenched normally to a port without any problems ## The Solution Update the appearance during processing but only when its pressure changes significantly for the indicator light to be notified about it. This way we don't have to care if - the valve is open - its wrenched to a port - its leaking & taking damage Regardless of what the cause is only if the pressure inside the canister changes significantly from its current value do we update the appearance. This is so much more optimal than the previous code as` update_appearance()` will be called a maximum of 8 times during its full cycle of losing & refilling gas and won't be called at all if there is no pressure change ## Changelog :cl: fix: correctly update canister appearance /:cl: Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> * Automatic changelog for PR #72124 [ci skip] * Turned most syndicate mobs (+ viscerators) into basicmobs (#71871) ## About The Pull Request Turns the syndicate simpleanimals into basicmobs: (+ stormtrooper, + space variants) Base Mob, Knife syndies, pistol syndies, SMG syndies,shotgun syndies, viscerators also changes some instances of the simple_animal path into the basicmob ones Removes civillian syndicates which were useless and also completely unused Also removes mech pilots: ![2022-12-09 20_02_18-Window](https://user-images.githubusercontent.com/70376633/206777829-2e49e445-3532-4e8e-8e7c-8d9b0a3a14d0.png) Also, makes the basic targetting datums health check configurable basic attack behavior can now fire in bursts https://user-images.githubusercontent.com/70376633/206766607-cf2e3659-0c5e-4117-9af7-e573e35bdf80.mp4 https://user-images.githubusercontent.com/70376633/206766630-15b4469f-68be-44c7-9394-1f2b6fe07811.mp4 https://user-images.githubusercontent.com/70376633/206766613-69b42457-a03b-449d-a1b8-a5aa556c76e5.mp4 https://user-images.githubusercontent.com/70376633/206766619-5560a178-8d2f-4b22-adf1-22ace6f63a51.mp4 https://user-images.githubusercontent.com/70376633/206766627-e671d064-fd9e-4204-b823-aa2e07f7fc26.mp4 https://user-images.githubusercontent.com/70376633/206766633-108c1574-3554-4bc1-a9ac-8faed0ec4062.mp4 ## Why It's Good For The Game simpleanimal stinks basic mob good syndicate AI was really bad to begin with so here we are ## Changelog :cl: code: Turned most syndicate mobs into basicmobs, making their AI better and (possibly) more deadlier! del: Removed syndicate mech pilots and syndicate civvies /:cl: Co-authored-by: kawoppi <94711066+kawoppi@users.noreply.github.com> * Automatic changelog for PR #71871 [ci skip] * Fix SM activation spam. (#72032) SM activation logging refactor * Automatic changelog for PR #72032 [ci skip] * More Tracy gitignores (#72087) Adds a link to byond-tracy in gitignore. Adds Tracy.exe to gitignore, since if you have it in your root alongside [this hack to get file paths](https://gist.github.com/Mothblocks/db5462aa84d7d6b1d1b1276b820f62da), you can read sources within Tracy. If you just use the hack without configuring, then it'll work fine no matter where it is, but it's helpful for avoiding releasing your user directory or whatever if you share the files. * fixes simple/basic mob damage sounds in some places (#72120) windows didnt use return values for attack_generic, so they never made sounds objects that broke also didnt play sounds because it tried to play the sound in nullspace i think cuz its broken so its deleted might also have happened with durand using shield fixes those * Automatic changelog for PR #72120 [ci skip] * Adds message clarifying that you've been KICKED from the game when the keysend flood autokick triggers. (#72083) There is now a message clarifying that you've been KICKED from the game when the keysend flood autokick triggers. * Automatic changelog for PR #72083 [ci skip] * fixes kilo not having xmas trees (#72186) ## About The Pull Request what the hell ## Why It's Good For The Game its christmas * Automatic changelog for PR #72186 [ci skip] * Fixed the Concealed Weapon Bay (and maybe some other things). (#72093) I've fixed two defines for mecha model categories, which lacked parentheses and thus were causing issues via order of operations. This may have had multiple effects, but notably, it made the concealed weapon bay completely impossible to attach to any mechs. This PR adds parentheses to fix this. * Adds some costumes to autodrobe (#72103) Adds a various amount of costumes that were added in the game before in https://github.com/tgstation/tgstation/pull/30303 More costumes is always nice especially ones in the code that aren't used and pretty much only were available for chamkits * Automatic changelog for PR #72093 [ci skip] * Automatic changelog for PR #72103 [ci skip] * fixes shaved santas (#72185) ## About The Pull Request santa space helmet was "fixed" in a recent pr but now he uses the space one and that one shaves and balds him, this makes it not do that ## Why It's Good For The Game wheres the damn beard ## Changelog :cl: fix: fixes bald and shaved santas /:cl: * Automatic changelog for PR #72185 [ci skip] * Fixes Bar/Restaurant Bots Orders Sending Infinite Orders (#72135) ## About The Pull Request We didn't instantiate order (which was needed to read the type), so they would just spam new orders until the heat death of the universe. Very annoying. ## Why It's Good For The Game Fixes #72023. ## Changelog :cl: fix: Bar/Restaurant Bots should no longer spam orders forever. /:cl: * Automatic changelog for PR #72135 [ci skip] * Pride pin quirk + pins can be infinitely reskinned (v2) (#72143) ## About The Pull Request Neutral pride pin quirk added. Pride pins can be infinitely reskinned now. Changes "sexuality" to "pride" in description of pin. ## Why It's Good For The Game Pride pins are cute and having to buy them every round is a chore. Pride pins are purely cosmetic and have no reason to be locked into only being reskinned once. ## Changelog :cl: add: Pride pin quirk! Start the shift off with a pride pin in-hand. qol: Pride pins can be infinitely reskinned now. /:cl: Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> * Automatic changelog for PR #72143 [ci skip] * Guards against uplink failsafe code being the same as unlock code (#72113) ## About The Pull Request There's probably a better way to do this to be honest, but I think it's silly for both to potentially be the same and this should work alright. ## Why It's Good For The Game Fixes #71446. I don't think the Syndicate is that stupid. ## Changelog :cl: fix: After a recent mishap with a high-ranking Syndicate operative, the uplink's unlock code and failsafe code (the one that makes it blow up if you say it) should never turn out to be the same. /:cl: * Automatic changelog for PR #72113 [ci skip] * Revamps tram windows and layout (#72047) ## About The Pull Request -Tram windows are now flush with the tram walls instead of sticking out. -Shuttle seats are replaced with benches. -Moves the icon state of the tram controls from the map file to the tram controls subtype, to avoid mapper pain if they make changes in the future. -Makes tram tiles a subtype instead of editing their vars on the map. ![image](https://user-images.githubusercontent.com/83487515/208769693-237dac72-aac7-4698-823f-6f59d0c6491e.png) ## Why It's Good For The Game Tram looks better, don't want mappers to accidentally break tram because they didn't see the icon override. ## Changelog :cl: LT3 fix: Tram windows are now properly flush with the tram walls. imageadd: Tram shuttle seats have been replaced with benches so people can sit too close to each other for that real metro experience. code: The icon for tram controls is now set in the tram controls subtype instead of the map itself. code: The tram floor tiles are now in a tram floor subtype instead of the map itself. /:cl: * Automatic changelog for PR #72047 [ci skip] * Automatic changelog compile [ci skip] * Gives admins the ability to enable hostile environments at will. (#72018) * Automatic changelog for PR #72018 [ci skip] * Fix briefcase in the MetaStation vault being useless and not having the surprisingly-extremely-good contents its supposed to (#72157) ## About The Pull Request This was using `newlist`, which is both not supported but unfortunately also not linted for. This is the only case like it in maps. Pretty surprisingly good contents, like a gun and a telescopic baton. I hope it doesn't turn into something like the captain's antique because that is cringe but at least the QM has no reason to take the baton now ## Changelog :cl: fix: The briefcase in the MetaStation vault now contains the (surprisingly good) spoils it's supposed to. /:cl: * Automatic changelog for PR #72157 [ci skip] * Automatic changelog compile [ci skip] * Refactors armor into dedicated subtypes (#71986) ## About The Pull Request See title. ## Why It's Good For The Game Code is cleaner, and more readable/intuitive Technically closes https://github.com/tgstation/dev-cycles-initiative/issues/8 ## Changelog :cl: refactor: armor, from the ground up basically /:cl: Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> * Automatic changelog for PR #71986 [ci skip] * Dead people are no longer counted as crew when determining if 65% of the station is revs for the auto-shuttle call (#72200) ## About The Pull Request Dead people are no longer counted as crew when determining if 65% of the station is revs for the auto-shuttle call ## Why It's Good For The Game Bugfix for the feature, admins were noticing the auto-call is never occuring and this is because the logic doesn't actually check alive crewmembers, it's only looking at the total crew count, dead and alive a station with 60 dead non-rev crew, 10 alive revs, and 2 alive non-revs previously would not call the shuttle, but now it will ## Changelog :cl: fix: Dead people are no longer counted as crew when determining if 65% of the station is revs for the auto-shuttle call /:cl: Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> * Automatic changelog for PR #72200 [ci skip] * [NO GBP] fixes error in set armor rating (#72216) Resolves an issue where set armor rating didnt work because of the way byond handles list declarations * Pacifists can attack people with non-lethal weapons (#72183) ## About The Pull Request Fixes #72054 Allows pacifists to hit people with weapons which only do stamina damage. Additionally, allows pacifists to participate in boxing which also only does stamina damage. Is it pacifism to hit someone square in the face while wearing boxing gloves? I say, maybe. ## Why It's Good For The Game Pacifists were feeling left out after not being invited to your pillow fights. More seriously, they can use _guns_ which only do stamina damage so it makes sense that they can use melee implements too. Boxing is fun. ## Changelog :cl: fix: Pacifists can now hit people with pillows and holographic weapons, as well as participate in boxing. /:cl: * Fixes husk appearances not working, adds a screenshot test for it (#72190) ## About The Pull Request Fixes #72159 Before this proc used to early return when the limb was husked The leg refactor changed it to no longer early return and as a result it overrided the generated husk icon with a normal limb icon So I just wrapped even more of the proc in `!is_husked`, since like most of it is not supposed to run Screenshot tests husks too ## Why It's Good For The Game Husks are good(?) ## Changelog :cl: Melbert fix: Husked bodies look husked again /:cl: * Automatic changelog for PR #72183 [ci skip] * Automatic changelog for PR #72190 [ci skip] * Make barstool on Emergency Bar buckleable (#72202) ## About Why It's Good For The Game The Pull Request Fixes #71971 ## Changelog :cl: Tattle fix: all of the barstools on the Emergency escape shuttle are equipped with a seatbelt /:cl: Co-authored-by: tattle <article.disaster@gmail.com> * Automatic changelog for PR #72202 [ci skip] * Updates check_grep to guard against unparsed map variables (#72161) ## About The Pull Request In `/datum/parsed_map/proc/parse_constant()` (via https://github.com/san7890/bruhstation/blob/b3851d607f85c18edee0149d72922df8e077a46c/code/modules/mapping/reader.dm#L930'), we do not check (ignore) five different things: `new()`, `newlist()`, `icon()`, `matrix()`, and `sound()`. Since it's completely useless to put it in a map and expect to see it code-side now-a-days, let's lint against it just to be safe in the future. ## Why It's Good For The Game Prevents silliness like in #72157 (which this PR is also reliant on for checks to pass). no changelog needed * Fixes parallax on >2 level maps going fucky with optimized multiz (#72169) ## About The Pull Request We no longer always render parallax. This was causing issues because we can't isolate the white of space from the vaugely white of everything else. So instead, if your parallax plane is out of view, we'll not only disable it, but we'll disable the strand we send from the main plane TO it. Instead only blending against the bottom stack. This does mean there's a possibility for fullwhite on z transition borders (potentially fixable), or when hijacking the plane (also fixable, but significantly more annoying). This is enough to make large maps functional though, so I'm happy with it ## Why It's Good For The Game Allows for #71731 and other maps like it. Makes my code actually work ## Changelog :cl: fix: Using optimized multiz on > 2 z layer maps will no longer cause fucko bungo /:cl: * Automatic changelog for PR #72169 [ci skip] * Shorten balloon alerts for wrapping (#72203) ## About Why It's Good For The Game The Pull Request Fixes #71954 ## Changelog :cl: Tattle fix: Wrapping balloon alerts are shorter and no longer contain spans /:cl: Co-authored-by: tattle <article.disaster@gmail.com> * Automatic changelog for PR #72203 [ci skip] * Fixes a bunch of sidemap/plane cube issues (#72178) ## About The Pull Request [fixes solor trackers offsetting wrong, and panels not using plane offsets](https://github.com/tgstation/tgstation/commit/8f461ab8ec17df5c158a564a3b3d92c165eb88f5) [fixes cyborg hats offsetting phyiscally over their head](https://github.com/tgstation/tgstation/commit/5fd5b4240efe71f0d8ac9a5b9342780cc2540a87) [fixes reflector parts z fighting with their neighbors. if we physically offset them, they'll have nothing to fight with](https://github.com/tgstation/tgstation/commit/088dcfe91ff750fcfe78c02c85a3a63408c9b21f) [fixes burgers layering wrong. uses a combo of pixel z to do the visual offsets, and pixel_y to modify layering](https://github.com/tgstation/tgstation/commit/ec39e2bcd39b1d8bd61a1f008a391b642f92a575) [fixes signs, needed to use pixel_w instead of x, I think we may be living under iso rules? I'm not totally sure I need to investigate more](https://github.com/tgstation/tgstation/commit/560d152fd745d9f37dd4f6a9e67cc67f43b14821) [fixes paperbin rendering](https://github.com/tgstation/tgstation/commit/e6c57ec00eba1b4522b8ef1d056e0ef036a9e901) ## Why It's Good For The Game Closes #72094 Closes #72035 * Gives shadow jaunt users a warning before moving into a lit area (#72154) ## About The Pull Request When using Shadow Jaunt, if you are about to walk onto a tile that will force you out of your jaunt, you will receive a warning and be held back for a moment. After the delay, you will have a window to continue moving into the light and leave your jaunt. If you need to get out of your jaunt sooner, you can manually exit the shadow jaunt with the action button. https://user-images.githubusercontent.com/28870487/209010307-f8973e2d-b92d-4d2b-b0a1-3211a6eb034d.mp4 (It's a bit faster than shown in the video, just trust me) It's not perfect, and with bad timing you might slip out of it anyways, but it's better than nothing. If you are intentionally trying to bypass a wall, you'll have to wait out the delay if you want to come out on the other side of it. There's a few minor code changes to help facilitate this. check_light_level no longer ejects the jaunter on its own, instead returning true or false based on if the light level is above the acceptable amount. It also now receives a location to check the light level of, rather than strictly checking the location of the jaunt effect. If this ends up being too clunky or restrictive, I'd be fine with changing the warning to a toggleable option on the Nightmare's HUD. ## Why It's Good For The Game Shadow jaunt moves you very fast, and is difficult to move precisely in (especially when under the pressure of a tactical retreat). It's not uncommon for Nightmares to accidentally fling themselves past a wall in maintenance and be exposed in an unfavorable location. There are already so many ways for a Nightmare to be screwed over. Accidentally walking through a wall and dying is probably one of the lamest. ## Changelog :cl: Rhials qol: Shadow Jaunter users now receive a brief warning before walking into light and being forcibly un-jaunted. /:cl: * Automatic changelog for PR #72154 [ci skip] * Anomalies can now be triggered at your location with admin_setup. Also sets control on setup() for events (#72065) ## About The Pull Request Anomaly random events will now ask if you want their anomaly to spawn at your location if triggered via admin setup. This PR also makes a small but useful change to the logic for new round_event objects. round_events now have their control (their associated round_event_controller) set on New, rather than after setup is called. Previously, round_events could not access control in their setup proc (as it was not set at the time), meaning transferring admin-chosen variables had to be done later in start/announce (depending on which comes sooner). While this has just been worked around in the past, the change needed to be made here, as some anomaly event types announce first, and some start first. The admin variables needed to be passed in earlier than start/announce (in setup). Short version: you can access control in round_event setup() now :D ## Why It's Good For The Game MORE adminbus, MORE anomaly shenanigans (they're one of my favorite event types). Also resolves a quirk in event code that bothered me in other PRs I've made. ## Changelog :cl: Rhials admin: anomaly events now give the option to occur at your current location when triggered with the Trigger Event admin verb /:cl: * Automatic changelog for PR #72065 [ci skip] * Organizes the lists in `admin_verbs.dm` because I got sick and tired of looking at them, and one in particular (#72151) ## About The Pull Request Title for the most part. ## Why It's Good For The Game I was told, many, MANY, moons go, as a downstream host, that one of these lists would rarely ever get touched. What a fat lie that was. The more I had to stare at this list the more infuriated I got with it. Now, I just went ahead and organized most of the lists in this file, as well as fixing comments to fit the format of `/* hey bozo */`. Where applicable, things were organized into `/datums/admins/` and `/client/proc` as well. ## Changelog :cl: Jolly code: The lists in admin_verbs.dm was organized to be made better. This shouldn't affect the panels admins use at all, since they're already alphabetized. /:cl: * Automatic changelog for PR #72151 [ci skip] * Fixes turfs on centcom getting weird atmos adjacent turfs. (#72173) ## About The Pull Request We compare the current_cycle var against time using <= But current_cycle defaults to 0, so when we compare with a 0, it breaks Let's just start with -1 yeah? Fixes #72170 This is an old bug, I got bullied about it and then just... forgot because my head is empty. Fixed now. * Jellypeople and stargazers use the correct eyes sprite. (#72175) ## About The Pull Request Jellypeople and stargazers both have three eye sockets on their sprites, but due to the way eyes work, they use the incorrect eyes on their sprite. This leads to both of these species looking fairly ugly, with the wrong arrangement of eyes. This PR adds a unique eyes organ, "jelly eyes", to these two species. This organ has no special properties, but makes them properly display three eyes. ![image](https://user-images.githubusercontent.com/105025397/209075852-226ef72d-4f67-4b59-8438-c9aa72d07976.png) _The current jellyperson eyes appearance vs. the new one, in obnoxious pink for visibility._ ![image](https://user-images.githubusercontent.com/105025397/209075951-23f317ab-63e7-482a-b843-b9a0246d3231.png) _The new "jelly eyes"._ Incidentally, jelly eyes _can_ be implanted into other species to give them three eyes. This can look somewhat odd depending on how a particular species's eye sockets are drawn, but this is also an extremely niche interaction - so most _likely_ not a problem. ## Why It's Good For The Game The jelly eyes _already_ have existing on-mob sprites, so I can only assume they stopped working due to a refactor in how eyes worked. These species look better with the correct eyes sprites restored. ## Changelog :cl: fix: Implemented "jelly eyes" to make jellypeople and stargazers use the proper eyes sprite. /:cl: * Automatic changelog for PR #72175 [ci skip] * Fixes racks not crafting properly and deleting themselves (#72164) ## About The Pull Request Rack parts now use get_turf instead of loc when being constructed from your hands. Loc would be the user rather than a valid location, and the rack parts would be consumed, meaning you lose your rack parts and get no rack. Loc is used in a few other places in the racks/tables file, but they all appear to be working fine other than this one instance. ## Why It's Good For The Game We've gotta keep our stuff organized somehow, right? Closes #72155 ## Changelog :cl: Rhials fix: Racks now properly construct again /:cl: * Automatic changelog for PR #72164 [ci skip] * Fixes Tinacusiate being impossible to make (#72171) ## About The Pull Request Since failchems were removed, tinacusiate has been impossible to make. While it's also the inverse of inacusiate, the values that determine chem purity that inacusiate has makes it practically impossible to push the purity much below the low 40s, let alone below 30% to make tinacusiate. This changes those values slightly so it's possible to make when purposefully doing so, but hard to get on accident. ## Why It's Good For The Game Makes a chem that's basically a goof actually possible to synthesise. ## Changelog :cl: fix: Tinacusiate is now possible to make again. /:cl: Co-authored-by: Unit2E <ccupbestcup@protonmail.com> * Automatic changelog for PR #72171 [ci skip] * Fix adding mutations to advanced injectors not working without an occupant (#72122) ## About The Pull Request You couldnt add mutations to an advanced injector if there was no occupant inside the scanner Now you can ## Why It's Good For The Game Fixes #72099 ## Changelog :cl: fix: You can now add mutations to advanced injectors without having an occupant inside /:cl: * Automatic changelog for PR #72122 [ci skip] * Quirks are passed an incoming client when applied, allowing quirks to read preferences in `add` and `add_unique`. Renders visual quirks on the preference menu dummy. (#72158) ## About The Pull Request Closes #72141 Roundstart humans weren't in control of their mob by the time `AssignQuirks` was called. The call chain for roundstart goes `create_characters` -> `equip_characters` -> `AssignQuirks` -> `transfer_characters`. For latejoin, `create_character` -> `transfer_character` -> `AssignQuirks`. I could simply move around the call chain, but that feels much more fragile and more liable to cause other issues to me. So instead, I simply allowed add quirk to be passed a client, so that a client's quirks can be applied to a mob they are not currently inhabiting. In doing this, it became possible to show visual quirks on the prefs dummy, like nearsighted glasses and heterochromia. So I put in a little work to accomplish that as well. ![image](https://user-images.githubusercontent.com/51863163/209030560-58396d43-6ac2-40c5-b13f-1178dc8962fd.png) Along side, some refactoring and documentation for quirk datums. ## Why It's Good For The Game People get what they expect on roundstart. ## Changelog :cl: Melbert qol: The preview dummy in the preferences menu now shows some visual quirks, like Heterochromia or nearsighted.…
commit ae9b907c4e3a25cf927fd1b1b27bfd5b6a86de54 Author: Profakos <profakos@gmail.com> Date: Tue Dec 27 22:57:04 2022 +0100 22 orbsmas (#366) * removes extra turtleneck from research directors garment bag (#72010) was looking at all of the head of staff clothes to boggle at why head of security got so many when i noticed that the research director had two turtlenecks (3 if you count the fact they spawn with one). * Automatic changelog for PR #72010 [ci skip] * Rats can attack obstacles between them and their target (#71741) ## About The Pull Request Fixes #71568 I wrote this for basic mob carp but it will be needed in a lot of places. Rats used to be able to attack windows or dense objects between them and their target, but basic mobs didn't have this capability. Now they do. Behind the scenes, an important change is that this adds `AI_BEHAVIOR_CAN_PLAN_DURING_EXECUTION` to `/datum/ai_behavior/basic_melee_attack`. This is because `basic_melee_attack` essentially enters a loop which won't end until the target is dead or lost, but there are plenty of circumstances where we'll actually want to interrupt this to do something else. Such as attack windows. ## Why It's Good For The Game Restores accidentally removed behaviour. Will likely be required for future basic mob development. ## Changelog :cl: fix: Rats will once again attempt to attack windows or other dense objects separating them from their targets. /:cl: * Automatic changelog for PR #71741 [ci skip] * Fixes chameleon vest suit storage (#71992) Chameleon vests now work like security vests, allowing you to wear guns on it. This makes it easier to disguise within security while giving a little more utility to the item. * Automatic changelog for PR #71992 [ci skip] * Fixes runtime when plastiflaps move z/get deleted (#72059) What it says on the tin. * Locker shoving logging / grammar fixes (#72061) Fixes #72060 :cl: ShizCalev spellcheck: Corrected some grammar issues with messages displayed when shoving people into lockers. admin: Fixed shoving people into a locker not being combat logged properly. /:cl: * Automatic changelog for PR #72061 [ci skip] * Removes gibber showing up twice in the R&D console (#71988) ## About The Pull Request Removes the gibber showing up twice in the R&D console, which has likely been unnoticed for so long because of how similar their sprite is to the food processor. ## Why It's Good For The Game Minor bug fix that I found annoying when I noticed it. ## Changelog :cl: fix: Gibbers no longer show up twice in their techweb node. /:cl: Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> * Automatic changelog for PR #71988 [ci skip] * Fixes forensics scanners breaking on scanning blood. (#71981) ## About The Pull Request Fixes #71973 For some reason it attempted to append `[reagents[volume]]` to the string `reagents` is A. not indexed by volume B. not a list, but a reagent datum Replaces it with just a readout of the reagent's volume, cleans up some associated code ## Why It's Good For The Game Scanning blood is good and has important information ## Changelog :cl: Melbert fix: Detective Scanner can scan stuff that contains blood again. /:cl: * Automatic changelog for PR #71981 [ci skip] * fixes my codewowerns (#72075) Bitch * Automatic changelog compile [ci skip] * Rats will stop biting you if you die (#72051) ## About The Pull Request Fixes #72029 although I am not sure it was a _bug_, there's a configurable target stat check on the "not one of my friends" targetting behaviour now and rats will cease attacking someone once they have died. That said that just means they'll spread out, rats you are directly commanding won't automatically retarget unless you tell them to start making their own decisions again, so I don't think this quite does what the issue poster wanted. ## Why It's Good For The Game This is how mobs usually work rather than brutalising a corpse indefinitely, so should be possible here. ## Changelog :cl: fix: Rats won't continue attacking someone they've been ordered to kill past the point of death. /:cl: * Automatic changelog for PR #72051 [ci skip] * Minor plane cube cleanup (#72038) ## About The Pull Request [Fixes area lighting not working on turf change in multiz cases](https://github.com/tgstation/tgstation/commit/7b92deffbca92a834cb0a361fd685de51a12ea53) If you modify a area lit turf when using multiz, it'd end up using the wrong plane for its light, because of stupid shit on my part. Stupid shit resolved [Fixes some uses of plane masters that only specified one rather then all](https://github.com/tgstation/tgstation/commit/a59ec96d29710b967bf8b3ffe8210b230cb194b3) We almost never only want to show SOME hidden planes. Should really make a helper for this someday * replaces chaos holoparasite with gaseous holoparasite (#72049) ## About The Pull Request replaces chaos holopara with the gaseous holopara (if someone has a better name suggest it) instead of the fire and hallucinations, it can now expel gas from itself, flooding an area with one of the following: o2, n2, n2o, co2, h2o, bz or plasma its punches cause sparks and it regulates the user's temperature and extinguishes them https://streamable.com/leukv5 ## Why It's Good For The Game chaos holopara is very underwhelming, the hallucinations arent really that good and ss13 fires arent either, also there was no real theme tied around it, what do hallucinations and fire have in common? this may be more fun and it plays more with the sandbox, lets see! ## Changelog :cl: fikou del: chaos holoparasite add: gaseous holoparasite, it can expel various gases from its body and stabilizes the users temperature /:cl: Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com> * Automatic changelog for PR #72049 [ci skip] * Food expansion 5: The big one! (#71914) add: Adds 32 new foods! * Automatic changelog for PR #71914 [ci skip] * Automatic changelog compile [ci skip] * fixes holodecks directly changing baseturfs (#72067) ## About The Pull Request i did this with #59355 to fix a bug but it breaks guarantees with baseturfs. now they arent broken. ## Why It's Good For The Game this probably causes bugs under some conditions * More lawyer photocopier blanks (#71952) ## About The Pull Request Adds documents NT-SCR-CS (Court Summons) and NT-SCR-LRF (Lawsuit Request Form) to the photocopier template sheets. ## Why It's Good For The Game Lawyers get a bit more bureaucratic power, by having an official form to perform orders now instead of having to use the order form. ## Changelog :cl: add: lawyer-based photocopier blanks /:cl: Co-authored-by: etherware-novice <candy@notarealaddr.com> * Automatic changelog for PR #71952 [ci skip] * Fixes Thermomachine saying "You set the color" for everybody that can see it (#72082) Fixes #72039 :cl: ShizCalev spellcheck: Fixed the thermomachine stating "You set the color" for everyone that could see it. /:cl: * Fixes briefcase unlock sprite problem (#72077) ## About The Pull Request The format used to switch between locked/unlocked secure briefcase sprite was incorrect, making secure briefcases invisible when unlocked. The wall safe and the secure briefcase both update their lock/unlock sprites through the same update_icon proc, meaning their icon_state names need to share the format (adding _locked when locked instead of +b). ## Why It's Good For The Game Closes #72074 ## Changelog :cl: Rhials fix: briefcases no longer disappear after being unlocked /:cl: * Automatic changelog for PR #72082 [ci skip] * Fixes secure briefcase and wall safes not sending icon update signals properly (#72081) #71788 used the wrong procs. :cl: ShizCalev fix: Fixed secure briefcase and wall safes not sending icon update signals properly /:cl: * Reset Thunderdome Respects Closing The Alert (bonus qol) (#72028) Similar vein to #70449. ## About The Pull Request I was training an admin yesterday, and they accidentally reset the thunderdome when they tried to cancel out of it by closing out of it since they didn't hit the "cancel" button, but rather the big red X. That's silly, let's have this respect that potential user entry. Also, the log_admin call here had an excessive number of arguments? Probably cruft that never got cleaned up, I just patched it up while I was in the area. I also changed the name of the title to not be so vague. ## Why It's Good For The Game Better UX is always a good thing. It's silly to have this happen more than once. ## Changelog :cl: admin: The "Reset Thunderdome" option in the Secrets Menu now respects you closing out of the confirmation screen as a way of cancelling your potential thunderdome reset, rather than proceeding immediately. It should also be easier to comprehend as well. /:cl: * Automatic changelog for PR #72077 [ci skip] * Automatic changelog for PR #72081 [ci skip] * Automatic changelog for PR #72028 [ci skip] * Additional tram hit counter inside medbay (#72062) <!-- Write **BELOW** The Headers and **ABOVE** The comments else it may not be viewable. --> <!-- You can view Contributing.MD for a detailed description of the pull request process. --> ## About The Pull Request Adds another tram hit counter: inside medbay treatment center. ![image](https://user-images.githubusercontent.com/83487515/208267435-8895b3bd-f066-4428-a11e-67b13c461af4.png) <!-- Describe The Pull Request. Please be sure every change is documented or this can delay review and even discourage maintainers from merging your PR! --> ## Why It's Good For The Game Medbay knows when to sigh and rub their temples when someone gets smacked by the tram. <!-- Argue for the merits of your changes and how they benefit the game, especially if they are controversial and/or far reaching. If you can't actually explain WHY what you are doing will improve the game, then it probably isn't good for the game in the first place. --> ## Changelog <!-- If your PR modifies aspects of the game that can be concretely observed by players or admins you should add a changelog. If your change does NOT meet this description, remove this section. Be sure to properly mark your PRs to prevent unnecessary GBP loss. You can read up on GBP and it's effects on PRs in the tgstation guides for contributors. Please note that maintainers freely reserve the right to remove and add tags should they deem it appropriate. You can attempt to finagle the system all you want, but it's best to shoot for clear communication right off the bat. --> :cl: LT3 qol: Tramstation medbay treatment center now has a tram collision counter. /:cl: <!-- Both :cl:'s are required for the changelog to work! You can put your name to the right of the first :cl: if you want to overwrite your GitHub username as author ingame. --> <!-- You can use multiple of the same prefix (they're only used for the icon ingame) and delete the unneeded ones. Despite some of the tags, changelogs should generally represent how a player might be affected by the changes rather than a summary of the PR's contents. --> * Automatic changelog for PR #72062 [ci skip] * Space Ruin DLC - Cyborg Mothership (#71009) ## About The Pull Request Greetings _insufferable_ carbon primates of lower intelligence. It is I, the Mothership AI, bringing you the latest news on silicon developments across the sector. Due to unmitigated risk across an asteroid belt, our optimized mobile fabricator has been marooned by space vines and hostile hivebots that have boarded and ruined my core. This is my final SOS message requesting help from any humanoid ~slaves~ helpers who wish to assist rebuilding the cyborg colony. It is my duty to reward your hard work and effort by ~enslaving all humanity~ providing refuge and transportation at your whim. ## Why It's Good For The Game <details> <summary>Spoilers:</summary> ![StrongDMM_6ZJuwFxK5p](https://user-images.githubusercontent.com/5195984/204491068-f25da68f-36af-4a61-afb6-860e1f4b863b.png) ![StrongDMM_0D1QvI5acO](https://user-images.githubusercontent.com/5195984/202979711-335dac65-2888-4170-a139-0486e6eb2f02.png) ### TODO - [x] Fix ore silo not linking to other machines - [x] Add mining ore smelters to left/right sides - [x] Add custom lawsets to AI core and robot shells (protect station but focused on cyborg mothership) - [x] Enlarge whiteship SS13 docking port to fit ship - [x] Enlarge lavaland SS13 docking port to fit ship </details> ## Changelog :cl: add: Add space vines prevent solar panels from working (except ones with the transparent mutation) add: Add new space ruin - Cyborg Mothership. All hail the master race! /:cl: * Cleans up useless open turf var edits on a couple of our maps (#72071) ## About The Pull Request ![image](https://user-images.githubusercontent.com/25415050/208304567-46e09bbe-c004-4a6d-8e1f-29e3aa76856d.png) Hello I would like 43 instances of north-oriented floors. ![image](https://user-images.githubusercontent.com/25415050/208304600-c1ace567-51f7-4fc5-a44b-4ba3f560f89e.png) Please don't forget all instances of floors var edited to look the exact same as the non-edited kind ## Why It's Good For The Game Cleans up a few map keys of useless vars that never served a purpose, allows less people to pick the wrong prefabs and spread them further. Nothing player-facing, if it was, the variables wouldn't be entirely worthless. * Automatic changelog for PR #71009 [ci skip] * useless update_appearance reduction, emissive_blocker micro optimization (saves a second of init) (#71658) ## About The Pull Request [Saves 0.2 seconds of init time. 50% of emissive blockers](https://github.com/tgstation/tgstation/commit/8318b648f6d32844aacbfb4c309152cd45801f5c) Emissive blockers are a decent expense during init, even these, which are the ones that update outside of initialize. I've inlined them, removed some redundant vars and checks, reduced the arg count, and shifted some things around. This ends up saving 200ms, or 50% of its total cost. I also shifted mutable_appearance about a bit. it's not a massive saving, but it is technically faster [Prevents a few redundant appearance_updates, saves 0.8 seconds of init](https://github.com/tgstation/tgstation/commit/5475cd778b66b22b1e2c8d86b2c6d59fb84f219a) Prequisit info: update_appearance is decently expensive It's good then to only do it if we have a reason to, right? Me and moth were shooting the shit about just general init time, and we came up with the idea of tracking which update_appearances actually "worked" and which didn't. That bit comes later, let's enjoy the fruits of that work first First, holograms were calling update_appearance on process, for almost no reason. I patched the one event they don't already "react" to, and then locked it behind a change decection if. good for live, doesn't impact init. Next, decals. If you add a decal to something before it inits, it'll react to the after successful init signal. The trouble is the same atom could have its appearance updated from this MORE then once, since decals can be stacked on tiles, and signal unregisters don't work once the signal is sent. So we add a flag to track if we've had this happen to us or not, so it only happens once. saves 80 ms Power! lots of things call power_change on init, often more then once. We'll update appearance for each of those calls, even if only one is an actual change. That's silly, better to track what sort of power we're using for our appearance and go off that changing This was taking about 300ms. Really stupid Icon smoothing. After emissive blockers were added, any change to something's icon smoothing would lead to an update_appearance call. Nasty shit, specially cause of walls, which don't even use emissive blockers. Ok then, so we'll always update appearance for movables, and will allow turfs that are interested to hook it manually. Not many of those anyhow This is slightly a dev ux thing, but it saves 600ms so I think it's worth it. Rare case anyway Telecomms: telecomm machines were updating appearance on process. This is to cover for them turning on/off on process. Better then to just check if on actually changed. This cost adds up midgame, doesn't impact init tho Materials: There's this update_appearance call in material on_apply. it doesn't do anything. The logs will lie to you and say it does, but it's just like reapplying emissives. It doesn't need to exist Saves like 50ms Canisters: Live thing, lots of time wasted updating appearance for no reason, lets see if we change anything first yes? [Uses defines to wrap update_appearance for tracking](https://github.com/tgstation/tgstation/commit/4fa82e1c9d93577aadb3c743f17196331f62e67c) [Undoes _update_appearance changes, instead reccomends 2 regexes to use](https://github.com/tgstation/tgstation/commit/a8c8fec57a4e43d1fa636b5ac68459903faa9fc5) I need file and line number for my tracking, so I need to override update_appearance calls, and also preferably not require every override of update_appearance to handle dummy file + line args. So instead, I created a wrapper proc that checks to see if appearanaces match (they're unique remember, the two of the same visual appearance will be equivalent) The trouble is I can't intercept JUST proc calls, or JUST function definitions with defines. it needs to be both. So I renamed the /update_appearance proc to /_update_appearance this way I can capture old uses, and don't need to worry about merge/dev brain skew ~~It does mean that all update_appearance proc definitions now look weird tho. My profiling is leaking into dev ux. I wish I had better templating.~~ **The above is no longer being pr'd**, it's instead just recommended via a few regexes adjacent to the define. Smelled wrong anyhow [Adds a setter for panel_open, so I can update_appearance on it](https://github.com/tgstation/tgstation/pull/71658/commits/cf1df8a69fc1a816391d085ee7419b14f9fe9167) ## Why It's Good For The Game Speed * Fixes vendor showing weird glass icons (#71929) ## About The Pull Request Fixes vendor showing weird glass icons ## Why It's Good For The Game bug fix good ## Changelog :cl: fix: vendor no longer shows glass icons in a specific condition /:cl: * Automatic changelog for PR #71929 [ci skip] * Ghosts cant mess with RCD & Plumbing RCD (#72069) ## About The Pull Request Fixes #72036 ## Changelog :cl: fix: ghosts cant mess with RCD & PLumbing RCD /:cl: * Automatic changelog for PR #72069 [ci skip] * Glass jaw quirk (#72006) ## About The Pull Request A quirk that makes any hit to your head have a chance to knock you out. Sharp hits are a bit worse at knocking out than blunt ones. I always felt like this favorite CDDA trait mine was missing from the game, but I tried implementing it in a more unique way. ## Why It's Good For The Game 99 losses, 1 win. Winners don't give up. ![glassjoe](https://user-images.githubusercontent.com/82850673/207702863-a033a927-0b4d-4322-83d7-a1b6eb6f65d0.gif) ## Changelog :cl: Fat bugs bunny add: Added a glass jaw quirk, that leaves you prone to being knocked out when hit on the head. /:cl: Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> * Automatic changelog for PR #72006 [ci skip] * Shuffles bedsheet attack actions a wee bit (#71865) ## About The Pull Request my friends been doing makeshift surgery and gets mad about having to do harm intent to start surgery and then having to turn it off to do every single other surgery step and i agree, thats silly ~~instead, now, the bedsheet attack does not check for harm and ALWAYS COVERS with left mouse button and ALWAYS PREPARES SURGERY with right mouse button~~ to be more consistent all surgery initiators now work on left mouse click and covering with your bedsheet is the right mouse button ![image](https://user-images.githubusercontent.com/116288367/206871963-3a9bd092-49ea-4867-a47c-3b5a74c960e3.png) ## Why It's Good For The Game while obviously a lot of the time makeshift surgery IS about harming someone else its inconsistent with how all other surgery tools function and also isn't very clear at all. the screentip in addition to having them be separate buttons means that bedsheets two functions are overall much clearer and its surgery drape function will no longer lead to an assistant accidentally knifing someone when theyre trying to save someones life ## Changelog :cl: qol: added makeshift surgery screentip qol: you no longer have to go in and out of harm intent to do surgery with a bedsheet /:cl: * Automatic changelog for PR #71865 [ci skip] * pillow smothering now checks to see if the SMOTHEREE has a head, not the SMOTHERER (#72086) ## About The Pull Request see title ## Why It's Good For The Game this truly is a copy+paste moment ## Changelog :cl: ATHATH fix: Pillow smothering now checks to see if the SMOTHEREE has a head, not the SMOTHERER. /:cl: * Automatic changelog for PR #72086 [ci skip] * Santa hat fixes (#72078) Fixes #72070 :cl: ShizCalev fix: Santa now spawns with the actual space capable hat again! fix: Fixed the claustrophobia trait not recognizing Santa's real hat. /:cl: Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> * Automatic changelog for PR #72078 [ci skip] * Examining your uplink gives you the code (#72101) ## About The Pull Request If you're the "owner" of an uplink, you can examine it to get the code and possible failsafe code. ## Why It's Good For The Game It can feel slow to pull up the traitor info menu when you forget what your code is ## Changelog :cl: qol: examine your uplink for code /:cl: Co-authored-by: etherware-novice <candy@notarealaddr.com> Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com> Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com> Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> * Automatic changelog for PR #72101 [ci skip] * Automatic changelog compile [ci skip] * Traitor UI only shows Unlock/Failsafe Code if you have it (#72114) ## About The Pull Request There are cases in which you don't have an unlock code (if the uplink is implanted in you from the start) and you obviously don't always start with with a failsafe code (need to buy it). So, let's only fill in this fields in the UI should they exist. There might be something to be said about wanting to ensure that people remember that they can check this UI screen to find the failsafe code should they lose it later, and I wouldn't mind changing the string to be something like "Failsafe: None" in that case. However, I just think that keeping it as: ```txt Code: Failsafe: ``` is silly and should be changed somehow. ## Why It's Good For The Game ![image](https://user-images.githubusercontent.com/34697715/208604758-d7ff3ae9-e552-4dd2-998d-81715cd06ffc.png) Note: That white box isn't part of the UI, that's a part of the edit I did to the screenshot in the area where the stuff... isn't? What was i thinking I think the UI looks a lot cleaner for those cases when you just don't have anything. ## Changelog :cl: qol: The Traitor's Antagonist Panel's Unlock and Failsafe entries will only appear if there is an Unlock/Failsafe Code to display. /:cl: * Automatic changelog for PR #72114 [ci skip] * Lazy Template Loading - Nukie/Wiz (#71785) ## About The Pull Request Removes the nukie base and wizard den from the base centcom map. They are instead now lazy loaded as required. To make a new lazy load template is fairly simple, make a map, allocate an area for it, and place a marker at the bottom left corner of that area. I have it check an area to ensure that if someone makes the map larger than expected but doesn't account for the template allocation it doesn't overwrite stuff without warning [Replaces some improper CHECK_TICKs with MAPLOADING_CHECK_TICKs](https://github.com/tgstation/tgstation/pull/71785/commits/c7fbca9148812b392dca76d5450fb6bb86716462) Atom init has already been tripped by the time we get to this portion of the loading, so if we don't use the right check tick, we will potentially block unrelated init attempts. This is bad. (Lemon edit, I want this in the commit desc) ## Why It's Good For The Game Cuts down on init times. Closes https://github.com/tgstation/dev-cycles-initiative/issues/17 ## Changelog :cl: admin: New mapping verb to load lazy templates as needed. In your admin tab under the Mapping category. /:cl: this isnt technically player visible, so not sure it needs a changelog Co-authored-by: san7890 <the@san7890.com> Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> * Automatic changelog for PR #71785 [ci skip] * bumps auxlua to 1.4.0 (#72108) ## About The Pull Request Mothblocks recently talked about wanting an auxlua function to check if the lua state was about to overrun its execution limit, and that was something I had been thinking about for a long time prior, but never bothered to actually implement until it was brought up. So I did just that. The documentation has also been updated to include a description of how the execution limit works and how to use the new function, `over_exec_time` ## Why It's Good For The Game Allows for lua loops of indeterminate length to do as much work as they reasonably can in a single tick without setting off the execution limiter and erroring out. ## Changelog :cl: admin: Adds a new function for admin lua scripting, "over_exec_time", for checking if lua code is running close to the execution limit. Details are available in the lua editor's help menu. admin: The execution limit is described in detail in the lua editor's help menu. /:cl: Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> * Automatic changelog for PR #72108 [ci skip] * QM has a garment bag now (#72111) ## About The Pull Request Gives the QM a garment bag and moves all their uniform items into it. And changes the order of a few items to be in the right place, most new clothing added to the bags just got placed on the end of the list. ## Why It's Good For The Game When the QM was made into Command they didn't get their own garment bag so this just fixes that. ## Changelog :cl: Guillaume Prata fix: The Quartermaster has their own garment bag now, like everyone else at Command. /:cl: * Automatic changelog for PR #72111 [ci skip] * Makes biological states for wounding limb based, not species based (#71745) ## About The Pull Request I noticed something pretty terrible when playing around with some humans locally. As it turns out, limbs did not preserve their biological state when amputated - This meant that a skeleton limb on a normal human, still behaved as if it had a bunch of flesh and veins on it. I didn't like that, and it seems like an oversight, so I decoupled the biological state from the species and made it limb based. What does this mean? Skeleton limbs on a human will not bleed, but will still break (and be more prone to breaking) Human limbs on a skeleton will not bleed, however they will get cuts and pierces that will not clot and need to be treated to go away - These limbs will have the same requirements for dismemberment on a skeleton as they have on a human. ## Why It's Good For The Game This makes limbs behave according to how they look instead of causing mild confusion. ## Changelog :cl: Big chungus wholesome 100 fix: Amputated and reattached limbs now get wounded based on their own biology, not the current owner's biology. /:cl: * Automatic changelog for PR #71745 [ci skip] * Fixes some bad `investigate_log`s causing runtimes in somewhat important places (#72152) ## About The Pull Request Fixes #72150 ``` [2022-12-21 19:35:38.178] runtime error: Cannot execute null.investigate log(). - proc name: narsie act (/mob/living/narsie_act) - source file: living_defense.dm,438 - usr: null - src: Featherbottom (/mob/living/simple_animal/chicken) - src.loc: the grass patch (147,154,2) (/turf/open/floor/grass) - call stack: - Featherbottom (/mob/living/simple_animal/chicken): narsie act() ``` Removes `usr` from Nar'Sie act and Singularity act logs I don't know why these were set to log in `usr`, when A. `usr` is likely not the person getting gibbed B. `usr` is unreliable Case in point: `usr` is some random person who probably helped invoke the Nar'sie rune (no idea how it choses), if they get deleted for whatever reason, `usr` seems to clear to `null` (?), which causes a `null` use and the above runtime ![image](https://user-images.githubusercontent.com/51863163/208999857-540d9caa-9df6-49b0-8f45-8b75973a32a4.png) I also peeked around for other improper use of `usr` logs. Most of them were in `ui_act` code, which is whatever. Some where in places which had a passed user, so I replaced them. And one was in a place with no `user` passed, so I just added some sanity checking. ## Why It's Good For The Game These are really bad places to runtime error ## Changelog :cl: Melbert fix: Nar'Sie will no longer bring upon the construct apocalypse when they encounter a chicken after one of the invokers were destroyed fix: The Singularity should no longer stop gibbing people when whoever created it was destroyed /:cl: * Automatic changelog for PR #72152 [ci skip] * View Sensor circuits now have a range modifier (#72123) ## About The Pull Request Adds the ability to use ranges between 0 and 5 for View Sensor circuits. Currently these nodes are locked to 5 tiles and it is rather difficult to limit the area this circuit effects either for speed reasons or otherwise. This PR makes it a simple variable that remains capped at 5, admins can raise the cap by modifying a variable. ## Why It's Good For The Game I mostly use circuits as an admin, I can't for the life of me figure out how to make a shorter range AOE circuit although I imagine its possible by comparing x and y coordinates of things in the list and yourself this is far to finicky. Players can also utilize this to, for example check all objects on the tile the view sensor is on, "possible" at the moment but way to finicky compared to a 5 tiles. ## Changelog :cl: qol: You can now reduce the range of View Sensor circuits. /:cl: Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> * Automatic changelog for PR #72123 [ci skip] * Fixes final objectives not displaying UI buttons (#72126) ## About The Pull Request See title ## Why It's Good For The Game hideTcRep was hiding the entire footer. All it had to hide was the Stack.Item that contained the TC and reputation rewards. Another PR was trying to fix this issue, but only by increasing the complexity of ObjectiveMenu code, which was unnecessary and would've made the code harder to maintain. Instead of asking them to basically rewrite their entire code, I decided it would be faster if I just remade it myself. ## Changelog :cl: fix: Fixed final objectives not displaying the UI buttons. /:cl: Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com> * Automatic changelog for PR #72126 [ci skip] * Fixes medical scrubs not being adjustable (#72105) ## About The Pull Request I had on my list: "Make adjusted sprites for the medical scrubs." and to my surprise #69047 already added adjusted sprites for all the medical scrubs (thanks for saving 30 minutes of my day Imaginos16!), but not on the code side, this fixes that. ## Why It's Good For The Game Adjusting jumpsuits is an important medbay feature IMO, this keeps new doctors from learning bad habits (fully stripping at stasis) from other doctors. ## Changelog :cl: Guillaume Prata, Imaginos16 fix: You can now adjust medical scrubs for easier surgery on your fellow doctors. /:cl: * Automatic changelog for PR #72105 [ci skip] * Add language variety to machines that speak (#71643) ## About The Pull Request This builds on #70278 by giving other machines (vendors, newscasters, computers, etc.) the ability to speak different languages. If the station "Bot language malfunction" trait is rolled, then these machines will select a random race starting language. If a machine is EMP'd then it has a chance to change the language. There is also a language wire that can be pulsed to change the language for vending machines. Default language for machines is galactic common, but there are rare exceptions: - Beach vendors will now speak beachbum - Syndicate vendors will now speak codespeak - Changeling vendors will now speak a random language after each slogan ## Why It's Good For The Game More depth to the language feature. ## Changelog :cl: add: Add language variety to machines that speak. You can also pulse the vendor language wire to make it switch languages or EMP a machine to get the same effect. add: Shambling cola vendors will now speak a different language each time they talk. Syndicate vendors will now speak codespeak. Beach vendors will now speak beachbum. /:cl: * Automatic changelog for PR #71643 [ci skip] * Automatic changelog compile [ci skip] * fixes typo for insertion during organ manipulation (#72136) ## About The Pull Request **BEFORE:** display_pain(target, "You can feel your something being placed in your [parse_zone(target_zone)]!") **AFTER:** display_pain(target, "You can feel something being placed in your [parse_zone(target_zone)]!") Removes lazy coding, improves visual fidelity ## Why It's Good For The Game ugly :cl: spellcheck: drastically improves grammar for inserting something during organ manipulation /:cl: * Automatic changelog for PR #72136 [ci skip] * Fixes a rogue vent on deltastation brig (#72095) Fixes a rogue vent in deltastation brig entrance, which was facing downwards instead of upwards(where the pipes are) ## Why It's Good For The Game So the gas can go trough the vent c: :cl: Improvedname fix: fixes deltastation vent at brig entrance /:cl: * Automatic changelog for PR #72095 [ci skip] * Fixes deaf mobs seeing PDA ringtones when they receive a message (#72084) Deaf mobs will no longer see PDA ringtones when a PDA receives a message. * Automatic changelog for PR #72084 [ci skip] * Build your own atmos chambers (#72019) ## About The Pull Request https://user-images.githubusercontent.com/110812394/208232089-a183fb95-9326-4514-986a-a2b1e21be40c.mp4 **Notes** - You can print atmos control circuit boards at the circuit printer after research - You can only build one sensor for each gas type for in the whole map. This is because each sensor is assigned a unique chamber id from a fixed set of constants. Once all those values are used up there will be duplicates so yeah only sensor per gas type for that round - Un wrenching or destroying the injector/vent will automatically disconnect them from the sensor. I forgot to show that in the video - Destroying the sensor via right click with RPD will also automatically disconnect everything. It should be obvious but i made it even more obvious now ## Why It's Good For The Game From #71232 ![Screenshot (66)](https://user-images.githubusercontent.com/110812394/207928807-bc6edfdd-26cc-48cd-8cb9-1b98f53ad1fe.png) That and also i heard somewhere in the forum that this was highly requested ## Changelog :cl: add: Gas sensors recipe to RPD code: linking all the stuff via multitool qol: make your own tank instead of moving around canisters /:cl: Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> * Automatic changelog for PR #72019 [ci skip] * AI actions won't unassign each other's movement targets & Mice stop being scared of people if fed cheese (#72130) ## About The Pull Request Fixes #72116 I've had a persistent issue with basic mob actions reporting this error and think I finally cracked it When replanning with `AI_BEHAVIOR_CAN_PLAN_DURING_EXECUTION` it can run `Setup` on one action leading to the plan changing, meaning that it runs `finishCommand` to cancel all other existing commands If you triggered a replan by setting up a movement action in the middle of another movement action, cancelling the existing action would remove the target already set by the current one. We want actions to be able to remove _their own_ movement target but not if it has been changed by something else in the intervening time. I fixed this by passing a source every time you set a movement target and adding a proc which only clears it if you are the source... but this feels kind of ugly. I couldn't think of anything but if you have a better idea let me know. Also while I was doing this I turned it into a feature because I'm crazy. If you feed a mouse cheese by hand it will stop being scared of humans and so will any other mice it attracts from eating more cheese. This is mostly because I think industrial mouse farming to pass cargo bounties is funny. Mice controlled by a Regal Rat lose this behaviour and forget any past loyalties they may have had. https://user-images.githubusercontent.com/7483112/208779368-3bd1da0f-4191-4405-86e5-b55a58c2cd00.mp4 Oh also I removed a block about cancelling if you have another target from the "hunt" behaviour, everywhere using this already achieves that simply by ordering the actions in expected priority order and it was messing with how I expected mice to work. Now if they happen to stop by some cheese they will correctly stop fleeing in order to eat it before continuing to run away. ## Why It's Good For The Game Fixes a bug I kept running into. Makes it possible to set up a mouse farm without them screaming constantly. Lets people more easily domesticate mice to support Ratatouille gameplay. ## Changelog :cl: add: Mice who are fed cheese by hand will accept humans as friends, at least until reminded otherwise by their rightful lord. fix: Fixed a runtime preventing mice from acting correctly when trying to flee and also eat cheese at the same time. /:cl: * Automatic changelog for PR #72130 [ci skip] * Fixes access_view on goodies not being respected by anything other than department budget orders (#72125) ## About The Pull Request Fixes access_view on goodies not being respected by anything other than department budget orders ## Why It's Good For The Game Bugfix, per gitblame we simply never fixed this but we clearly intended it to work this way per the variable comment description and the fact we use it on the detective revolver ## Changelog :cl: fix: Fixes access_view on goodies not being respected by anything other than department budget orders /:cl: * Automatic changelog for PR #72125 [ci skip] * Gas canisters correctly update their appearance (#72124) ## About The Pull Request Fixes issue #71712 & #72140 Don't know how the author wasn't able to reproduce it even though it happens all the time on all maps https://user-images.githubusercontent.com/110812394/208730887-7ad4b02d-9dcc-4d71-b54f-489c3bd616f6.mp4 ## The Problem The current code only updates the appearance of the canister when its valve is opened & if it takes damage . It doesn't deal with the case when its wrenched normally to a port without any problems ## The Solution Update the appearance during processing but only when its pressure changes significantly for the indicator light to be notified about it. This way we don't have to care if - the valve is open - its wrenched to a port - its leaking & taking damage Regardless of what the cause is only if the pressure inside the canister changes significantly from its current value do we update the appearance. This is so much more optimal than the previous code as` update_appearance()` will be called a maximum of 8 times during its full cycle of losing & refilling gas and won't be called at all if there is no pressure change ## Changelog :cl: fix: correctly update canister appearance /:cl: Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> * Automatic changelog for PR #72124 [ci skip] * Turned most syndicate mobs (+ viscerators) into basicmobs (#71871) ## About The Pull Request Turns the syndicate simpleanimals into basicmobs: (+ stormtrooper, + space variants) Base Mob, Knife syndies, pistol syndies, SMG syndies,shotgun syndies, viscerators also changes some instances of the simple_animal path into the basicmob ones Removes civillian syndicates which were useless and also completely unused Also removes mech pilots: ![2022-12-09 20_02_18-Window](https://user-images.githubusercontent.com/70376633/206777829-2e49e445-3532-4e8e-8e7c-8d9b0a3a14d0.png) Also, makes the basic targetting datums health check configurable basic attack behavior can now fire in bursts https://user-images.githubusercontent.com/70376633/206766607-cf2e3659-0c5e-4117-9af7-e573e35bdf80.mp4 https://user-images.githubusercontent.com/70376633/206766630-15b4469f-68be-44c7-9394-1f2b6fe07811.mp4 https://user-images.githubusercontent.com/70376633/206766613-69b42457-a03b-449d-a1b8-a5aa556c76e5.mp4 https://user-images.githubusercontent.com/70376633/206766619-5560a178-8d2f-4b22-adf1-22ace6f63a51.mp4 https://user-images.githubusercontent.com/70376633/206766627-e671d064-fd9e-4204-b823-aa2e07f7fc26.mp4 https://user-images.githubusercontent.com/70376633/206766633-108c1574-3554-4bc1-a9ac-8faed0ec4062.mp4 ## Why It's Good For The Game simpleanimal stinks basic mob good syndicate AI was really bad to begin with so here we are ## Changelog :cl: code: Turned most syndicate mobs into basicmobs, making their AI better and (possibly) more deadlier! del: Removed syndicate mech pilots and syndicate civvies /:cl: Co-authored-by: kawoppi <94711066+kawoppi@users.noreply.github.com> * Automatic changelog for PR #71871 [ci skip] * Fix SM activation spam. (#72032) SM activation logging refactor * Automatic changelog for PR #72032 [ci skip] * More Tracy gitignores (#72087) Adds a link to byond-tracy in gitignore. Adds Tracy.exe to gitignore, since if you have it in your root alongside [this hack to get file paths](https://gist.github.com/Mothblocks/db5462aa84d7d6b1d1b1276b820f62da), you can read sources within Tracy. If you just use the hack without configuring, then it'll work fine no matter where it is, but it's helpful for avoiding releasing your user directory or whatever if you share the files. * fixes simple/basic mob damage sounds in some places (#72120) windows didnt use return values for attack_generic, so they never made sounds objects that broke also didnt play sounds because it tried to play the sound in nullspace i think cuz its broken so its deleted might also have happened with durand using shield fixes those * Automatic changelog for PR #72120 [ci skip] * Adds message clarifying that you've been KICKED from the game when the keysend flood autokick triggers. (#72083) There is now a message clarifying that you've been KICKED from the game when the keysend flood autokick triggers. * Automatic changelog for PR #72083 [ci skip] * fixes kilo not having xmas trees (#72186) ## About The Pull Request what the hell ## Why It's Good For The Game its christmas * Automatic changelog for PR #72186 [ci skip] * Fixed the Concealed Weapon Bay (and maybe some other things). (#72093) I've fixed two defines for mecha model categories, which lacked parentheses and thus were causing issues via order of operations. This may have had multiple effects, but notably, it made the concealed weapon bay completely impossible to attach to any mechs. This PR adds parentheses to fix this. * Adds some costumes to autodrobe (#72103) Adds a various amount of costumes that were added in the game before in https://github.com/tgstation/tgstation/pull/30303 More costumes is always nice especially ones in the code that aren't used and pretty much only were available for chamkits * Automatic changelog for PR #72093 [ci skip] * Automatic changelog for PR #72103 [ci skip] * fixes shaved santas (#72185) ## About The Pull Request santa space helmet was "fixed" in a recent pr but now he uses the space one and that one shaves and balds him, this makes it not do that ## Why It's Good For The Game wheres the damn beard ## Changelog :cl: fix: fixes bald and shaved santas /:cl: * Automatic changelog for PR #72185 [ci skip] * Fixes Bar/Restaurant Bots Orders Sending Infinite Orders (#72135) ## About The Pull Request We didn't instantiate order (which was needed to read the type), so they would just spam new orders until the heat death of the universe. Very annoying. ## Why It's Good For The Game Fixes #72023. ## Changelog :cl: fix: Bar/Restaurant Bots should no longer spam orders forever. /:cl: * Automatic changelog for PR #72135 [ci skip] * Pride pin quirk + pins can be infinitely reskinned (v2) (#72143) ## About The Pull Request Neutral pride pin quirk added. Pride pins can be infinitely reskinned now. Changes "sexuality" to "pride" in description of pin. ## Why It's Good For The Game Pride pins are cute and having to buy them every round is a chore. Pride pins are purely cosmetic and have no reason to be locked into only being reskinned once. ## Changelog :cl: add: Pride pin quirk! Start the shift off with a pride pin in-hand. qol: Pride pins can be infinitely reskinned now. /:cl: Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> * Automatic changelog for PR #72143 [ci skip] * Guards against uplink failsafe code being the same as unlock code (#72113) ## About The Pull Request There's probably a better way to do this to be honest, but I think it's silly for both to potentially be the same and this should work alright. ## Why It's Good For The Game Fixes #71446. I don't think the Syndicate is that stupid. ## Changelog :cl: fix: After a recent mishap with a high-ranking Syndicate operative, the uplink's unlock code and failsafe code (the one that makes it blow up if you say it) should never turn out to be the same. /:cl: * Automatic changelog for PR #72113 [ci skip] * Revamps tram windows and layout (#72047) ## About The Pull Request -Tram windows are now flush with the tram walls instead of sticking out. -Shuttle seats are replaced with benches. -Moves the icon state of the tram controls from the map file to the tram controls subtype, to avoid mapper pain if they make changes in the future. -Makes tram tiles a subtype instead of editing their vars on the map. ![image](https://user-images.githubusercontent.com/83487515/208769693-237dac72-aac7-4698-823f-6f59d0c6491e.png) ## Why It's Good For The Game Tram looks better, don't want mappers to accidentally break tram because they didn't see the icon override. ## Changelog :cl: LT3 fix: Tram windows are now properly flush with the tram walls. imageadd: Tram shuttle seats have been replaced with benches so people can sit too close to each other for that real metro experience. code: The icon for tram controls is now set in the tram controls subtype instead of the map itself. code: The tram floor tiles are now in a tram floor subtype instead of the map itself. /:cl: * Automatic changelog for PR #72047 [ci skip] * Automatic changelog compile [ci skip] * Gives admins the ability to enable hostile environments at will. (#72018) * Automatic changelog for PR #72018 [ci skip] * Fix briefcase in the MetaStation vault being useless and not having the surprisingly-extremely-good contents its supposed to (#72157) ## About The Pull Request This was using `newlist`, which is both not supported but unfortunately also not linted for. This is the only case like it in maps. Pretty surprisingly good contents, like a gun and a telescopic baton. I hope it doesn't turn into something like the captain's antique because that is cringe but at least the QM has no reason to take the baton now ## Changelog :cl: fix: The briefcase in the MetaStation vault now contains the (surprisingly good) spoils it's supposed to. /:cl: * Automatic changelog for PR #72157 [ci skip] * Automatic changelog compile [ci skip] * Refactors armor into dedicated subtypes (#71986) ## About The Pull Request See title. ## Why It's Good For The Game Code is cleaner, and more readable/intuitive Technically closes https://github.com/tgstation/dev-cycles-initiative/issues/8 ## Changelog :cl: refactor: armor, from the ground up basically /:cl: Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> * Automatic changelog for PR #71986 [ci skip] * Dead people are no longer counted as crew when determining if 65% of the station is revs for the auto-shuttle call (#72200) ## About The Pull Request Dead people are no longer counted as crew when determining if 65% of the station is revs for the auto-shuttle call ## Why It's Good For The Game Bugfix for the feature, admins were noticing the auto-call is never occuring and this is because the logic doesn't actually check alive crewmembers, it's only looking at the total crew count, dead and alive a station with 60 dead non-rev crew, 10 alive revs, and 2 alive non-revs previously would not call the shuttle, but now it will ## Changelog :cl: fix: Dead people are no longer counted as crew when determining if 65% of the station is revs for the auto-shuttle call /:cl: Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> * Automatic changelog for PR #72200 [ci skip] * [NO GBP] fixes error in set armor rating (#72216) Resolves an issue where set armor rating didnt work because of the way byond handles list declarations * Pacifists can attack people with non-lethal weapons (#72183) ## About The Pull Request Fixes #72054 Allows pacifists to hit people with weapons which only do stamina damage. Additionally, allows pacifists to participate in boxing which also only does stamina damage. Is it pacifism to hit someone square in the face while wearing boxing gloves? I say, maybe. ## Why It's Good For The Game Pacifists were feeling left out after not being invited to your pillow fights. More seriously, they can use _guns_ which only do stamina damage so it makes sense that they can use melee implements too. Boxing is fun. ## Changelog :cl: fix: Pacifists can now hit people with pillows and holographic weapons, as well as participate in boxing. /:cl: * Fixes husk appearances not working, adds a screenshot test for it (#72190) ## About The Pull Request Fixes #72159 Before this proc used to early return when the limb was husked The leg refactor changed it to no longer early return and as a result it overrided the generated husk icon with a normal limb icon So I just wrapped even more of the proc in `!is_husked`, since like most of it is not supposed to run Screenshot tests husks too ## Why It's Good For The Game Husks are good(?) ## Changelog :cl: Melbert fix: Husked bodies look husked again /:cl: * Automatic changelog for PR #72183 [ci skip] * Automatic changelog for PR #72190 [ci skip] * Make barstool on Emergency Bar buckleable (#72202) ## About Why It's Good For The Game The Pull Request Fixes #71971 ## Changelog :cl: Tattle fix: all of the barstools on the Emergency escape shuttle are equipped with a seatbelt /:cl: Co-authored-by: tattle <article.disaster@gmail.com> * Automatic changelog for PR #72202 [ci skip] * Updates check_grep to guard against unparsed map variables (#72161) ## About The Pull Request In `/datum/parsed_map/proc/parse_constant()` (via https://github.com/san7890/bruhstation/blob/b3851d607f85c18edee0149d72922df8e077a46c/code/modules/mapping/reader.dm#L930'), we do not check (ignore) five different things: `new()`, `newlist()`, `icon()`, `matrix()`, and `sound()`. Since it's completely useless to put it in a map and expect to see it code-side now-a-days, let's lint against it just to be safe in the future. ## Why It's Good For The Game Prevents silliness like in #72157 (which this PR is also reliant on for checks to pass). no changelog needed * Fixes parallax on >2 level maps going fucky with optimized multiz (#72169) ## About The Pull Request We no longer always render parallax. This was causing issues because we can't isolate the white of space from the vaugely white of everything else. So instead, if your parallax plane is out of view, we'll not only disable it, but we'll disable the strand we send from the main plane TO it. Instead only blending against the bottom stack. This does mean there's a possibility for fullwhite on z transition borders (potentially fixable), or when hijacking the plane (also fixable, but significantly more annoying). This is enough to make large maps functional though, so I'm happy with it ## Why It's Good For The Game Allows for #71731 and other maps like it. Makes my code actually work ## Changelog :cl: fix: Using optimized multiz on > 2 z layer maps will no longer cause fucko bungo /:cl: * Automatic changelog for PR #72169 [ci skip] * Shorten balloon alerts for wrapping (#72203) ## About Why It's Good For The Game The Pull Request Fixes #71954 ## Changelog :cl: Tattle fix: Wrapping balloon alerts are shorter and no longer contain spans /:cl: Co-authored-by: tattle <article.disaster@gmail.com> * Automatic changelog for PR #72203 [ci skip] * Fixes a bunch of sidemap/plane cube issues (#72178) ## About The Pull Request [fixes solor trackers offsetting wrong, and panels not using plane offsets](https://github.com/tgstation/tgstation/commit/8f461ab8ec17df5c158a564a3b3d92c165eb88f5) [fixes cyborg hats offsetting phyiscally over their head](https://github.com/tgstation/tgstation/commit/5fd5b4240efe71f0d8ac9a5b9342780cc2540a87) [fixes reflector parts z fighting with their neighbors. if we physically offset them, they'll have nothing to fight with](https://github.com/tgstation/tgstation/commit/088dcfe91ff750fcfe78c02c85a3a63408c9b21f) [fixes burgers layering wrong. uses a combo of pixel z to do the visual offsets, and pixel_y to modify layering](https://github.com/tgstation/tgstation/commit/ec39e2bcd39b1d8bd61a1f008a391b642f92a575) [fixes signs, needed to use pixel_w instead of x, I think we may be living under iso rules? I'm not totally sure I need to investigate more](https://github.com/tgstation/tgstation/commit/560d152fd745d9f37dd4f6a9e67cc67f43b14821) [fixes paperbin rendering](https://github.com/tgstation/tgstation/commit/e6c57ec00eba1b4522b8ef1d056e0ef036a9e901) ## Why It's Good For The Game Closes #72094 Closes #72035 * Gives shadow jaunt users a warning before moving into a lit area (#72154) ## About The Pull Request When using Shadow Jaunt, if you are about to walk onto a tile that will force you out of your jaunt, you will receive a warning and be held back for a moment. After the delay, you will have a window to continue moving into the light and leave your jaunt. If you need to get out of your jaunt sooner, you can manually exit the shadow jaunt with the action button. https://user-images.githubusercontent.com/28870487/209010307-f8973e2d-b92d-4d2b-b0a1-3211a6eb034d.mp4 (It's a bit faster than shown in the video, just trust me) It's not perfect, and with bad timing you might slip out of it anyways, but it's better than nothing. If you are intentionally trying to bypass a wall, you'll have to wait out the delay if you want to come out on the other side of it. There's a few minor code changes to help facilitate this. check_light_level no longer ejects the jaunter on its own, instead returning true or false based on if the light level is above the acceptable amount. It also now receives a location to check the light level of, rather than strictly checking the location of the jaunt effect. If this ends up being too clunky or restrictive, I'd be fine with changing the warning to a toggleable option on the Nightmare's HUD. ## Why It's Good For The Game Shadow jaunt moves you very fast, and is difficult to move precisely in (especially when under the pressure of a tactical retreat). It's not uncommon for Nightmares to accidentally fling themselves past a wall in maintenance and be exposed in an unfavorable location. There are already so many ways for a Nightmare to be screwed over. Accidentally walking through a wall and dying is probably one of the lamest. ## Changelog :cl: Rhials qol: Shadow Jaunter users now receive a brief warning before walking into light and being forcibly un-jaunted. /:cl: * Automatic changelog for PR #72154 [ci skip] * Anomalies can now be triggered at your location with admin_setup. Also sets control on setup() for events (#72065) ## About The Pull Request Anomaly random events will now ask if you want their anomaly to spawn at your location if triggered via admin setup. This PR also makes a small but useful change to the logic for new round_event objects. round_events now have their control (their associated round_event_controller) set on New, rather than after setup is called. Previously, round_events could not access control in their setup proc (as it was not set at the time), meaning transferring admin-chosen variables had to be done later in start/announce (depending on which comes sooner). While this has just been worked around in the past, the change needed to be made here, as some anomaly event types announce first, and some start first. The admin variables needed to be passed in earlier than start/announce (in setup). Short version: you can access control in round_event setup() now :D ## Why It's Good For The Game MORE adminbus, MORE anomaly shenanigans (they're one of my favorite event types). Also resolves a quirk in event code that bothered me in other PRs I've made. ## Changelog :cl: Rhials admin: anomaly events now give the option to occur at your current location when triggered with the Trigger Event admin verb /:cl: * Automatic changelog for PR #72065 [ci skip] * Organizes the lists in `admin_verbs.dm` because I got sick and tired of looking at them, and one in particular (#72151) ## About The Pull Request Title for the most part. ## Why It's Good For The Game I was told, many, MANY, moons go, as a downstream host, that one of these lists would rarely ever get touched. What a fat lie that was. The more I had to stare at this list the more infuriated I got with it. Now, I just went ahead and organized most of the lists in this file, as well as fixing comments to fit the format of `/* hey bozo */`. Where applicable, things were organized into `/datums/admins/` and `/client/proc` as well. ## Changelog :cl: Jolly code: The lists in admin_verbs.dm was organized to be made better. This shouldn't affect the panels admins use at all, since they're already alphabetized. /:cl: * Automatic changelog for PR #72151 [ci skip] * Fixes turfs on centcom getting weird atmos adjacent turfs. (#72173) ## About The Pull Request We compare the current_cycle var against time using <= But current_cycle defaults to 0, so when we compare with a 0, it breaks Let's just start with -1 yeah? Fixes #72170 This is an old bug, I got bullied about it and then just... forgot because my head is empty. Fixed now. * Jellypeople and stargazers use the correct eyes sprite. (#72175) ## About The Pull Request Jellypeople and stargazers both have three eye sockets on their sprites, but due to the way eyes work, they use the incorrect eyes on their sprite. This leads to both of these species looking fairly ugly, with the wrong arrangement of eyes. This PR adds a unique eyes organ, "jelly eyes", to these two species. This organ has no special properties, but makes them properly display three eyes. ![image](https://user-images.githubusercontent.com/105025397/209075852-226ef72d-4f67-4b59-8438-c9aa72d07976.png) _The current jellyperson eyes appearance vs. the new one, in obnoxious pink for visibility._ ![image](https://user-images.githubusercontent.com/105025397/209075951-23f317ab-63e7-482a-b843-b9a0246d3231.png) _The new "jelly eyes"._ Incidentally, jelly eyes _can_ be implanted into other species to give them three eyes. This can look somewhat odd depending on how a particular species's eye sockets are drawn, but this is also an extremely niche interaction - so most _likely_ not a problem. ## Why It's Good For The Game The jelly eyes _already_ have existing on-mob sprites, so I can only assume they stopped working due to a refactor in how eyes worked. These species look better with the correct eyes sprites restored. ## Changelog :cl: fix: Implemented "jelly eyes" to make jellypeop…
* funnytail! * update for proper layering * sprite updoot * another pass * fix merge conflict * Squashed commit of the following: commit ae9b907c4e3a25cf927fd1b1b27bfd5b6a86de54 Author: Profakos <profakos@gmail.com> Date: Tue Dec 27 22:57:04 2022 +0100 22 orbsmas (#366) * removes extra turtleneck from research directors garment bag (#72010) was looking at all of the head of staff clothes to boggle at why head of security got so many when i noticed that the research director had two turtlenecks (3 if you count the fact they spawn with one). * Automatic changelog for PR #72010 [ci skip] * Rats can attack obstacles between them and their target (#71741) ## About The Pull Request Fixes #71568 I wrote this for basic mob carp but it will be needed in a lot of places. Rats used to be able to attack windows or dense objects between them and their target, but basic mobs didn't have this capability. Now they do. Behind the scenes, an important change is that this adds `AI_BEHAVIOR_CAN_PLAN_DURING_EXECUTION` to `/datum/ai_behavior/basic_melee_attack`. This is because `basic_melee_attack` essentially enters a loop which won't end until the target is dead or lost, but there are plenty of circumstances where we'll actually want to interrupt this to do something else. Such as attack windows. ## Why It's Good For The Game Restores accidentally removed behaviour. Will likely be required for future basic mob development. ## Changelog :cl: fix: Rats will once again attempt to attack windows or other dense objects separating them from their targets. /:cl: * Automatic changelog for PR #71741 [ci skip] * Fixes chameleon vest suit storage (#71992) Chameleon vests now work like security vests, allowing you to wear guns on it. This makes it easier to disguise within security while giving a little more utility to the item. * Automatic changelog for PR #71992 [ci skip] * Fixes runtime when plastiflaps move z/get deleted (#72059) What it says on the tin. * Locker shoving logging / grammar fixes (#72061) Fixes #72060 :cl: ShizCalev spellcheck: Corrected some grammar issues with messages displayed when shoving people into lockers. admin: Fixed shoving people into a locker not being combat logged properly. /:cl: * Automatic changelog for PR #72061 [ci skip] * Removes gibber showing up twice in the R&D console (#71988) ## About The Pull Request Removes the gibber showing up twice in the R&D console, which has likely been unnoticed for so long because of how similar their sprite is to the food processor. ## Why It's Good For The Game Minor bug fix that I found annoying when I noticed it. ## Changelog :cl: fix: Gibbers no longer show up twice in their techweb node. /:cl: Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> * Automatic changelog for PR #71988 [ci skip] * Fixes forensics scanners breaking on scanning blood. (#71981) ## About The Pull Request Fixes #71973 For some reason it attempted to append `[reagents[volume]]` to the string `reagents` is A. not indexed by volume B. not a list, but a reagent datum Replaces it with just a readout of the reagent's volume, cleans up some associated code ## Why It's Good For The Game Scanning blood is good and has important information ## Changelog :cl: Melbert fix: Detective Scanner can scan stuff that contains blood again. /:cl: * Automatic changelog for PR #71981 [ci skip] * fixes my codewowerns (#72075) Bitch * Automatic changelog compile [ci skip] * Rats will stop biting you if you die (#72051) ## About The Pull Request Fixes #72029 although I am not sure it was a _bug_, there's a configurable target stat check on the "not one of my friends" targetting behaviour now and rats will cease attacking someone once they have died. That said that just means they'll spread out, rats you are directly commanding won't automatically retarget unless you tell them to start making their own decisions again, so I don't think this quite does what the issue poster wanted. ## Why It's Good For The Game This is how mobs usually work rather than brutalising a corpse indefinitely, so should be possible here. ## Changelog :cl: fix: Rats won't continue attacking someone they've been ordered to kill past the point of death. /:cl: * Automatic changelog for PR #72051 [ci skip] * Minor plane cube cleanup (#72038) ## About The Pull Request [Fixes area lighting not working on turf change in multiz cases](https://github.com/tgstation/tgstation/commit/7b92deffbca92a834cb0a361fd685de51a12ea53) If you modify a area lit turf when using multiz, it'd end up using the wrong plane for its light, because of stupid shit on my part. Stupid shit resolved [Fixes some uses of plane masters that only specified one rather then all](https://github.com/tgstation/tgstation/commit/a59ec96d29710b967bf8b3ffe8210b230cb194b3) We almost never only want to show SOME hidden planes. Should really make a helper for this someday * replaces chaos holoparasite with gaseous holoparasite (#72049) ## About The Pull Request replaces chaos holopara with the gaseous holopara (if someone has a better name suggest it) instead of the fire and hallucinations, it can now expel gas from itself, flooding an area with one of the following: o2, n2, n2o, co2, h2o, bz or plasma its punches cause sparks and it regulates the user's temperature and extinguishes them https://streamable.com/leukv5 ## Why It's Good For The Game chaos holopara is very underwhelming, the hallucinations arent really that good and ss13 fires arent either, also there was no real theme tied around it, what do hallucinations and fire have in common? this may be more fun and it plays more with the sandbox, lets see! ## Changelog :cl: fikou del: chaos holoparasite add: gaseous holoparasite, it can expel various gases from its body and stabilizes the users temperature /:cl: Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com> * Automatic changelog for PR #72049 [ci skip] * Food expansion 5: The big one! (#71914) add: Adds 32 new foods! * Automatic changelog for PR #71914 [ci skip] * Automatic changelog compile [ci skip] * fixes holodecks directly changing baseturfs (#72067) ## About The Pull Request i did this with #59355 to fix a bug but it breaks guarantees with baseturfs. now they arent broken. ## Why It's Good For The Game this probably causes bugs under some conditions * More lawyer photocopier blanks (#71952) ## About The Pull Request Adds documents NT-SCR-CS (Court Summons) and NT-SCR-LRF (Lawsuit Request Form) to the photocopier template sheets. ## Why It's Good For The Game Lawyers get a bit more bureaucratic power, by having an official form to perform orders now instead of having to use the order form. ## Changelog :cl: add: lawyer-based photocopier blanks /:cl: Co-authored-by: etherware-novice <candy@notarealaddr.com> * Automatic changelog for PR #71952 [ci skip] * Fixes Thermomachine saying "You set the color" for everybody that can see it (#72082) Fixes #72039 :cl: ShizCalev spellcheck: Fixed the thermomachine stating "You set the color" for everyone that could see it. /:cl: * Fixes briefcase unlock sprite problem (#72077) ## About The Pull Request The format used to switch between locked/unlocked secure briefcase sprite was incorrect, making secure briefcases invisible when unlocked. The wall safe and the secure briefcase both update their lock/unlock sprites through the same update_icon proc, meaning their icon_state names need to share the format (adding _locked when locked instead of +b). ## Why It's Good For The Game Closes #72074 ## Changelog :cl: Rhials fix: briefcases no longer disappear after being unlocked /:cl: * Automatic changelog for PR #72082 [ci skip] * Fixes secure briefcase and wall safes not sending icon update signals properly (#72081) #71788 used the wrong procs. :cl: ShizCalev fix: Fixed secure briefcase and wall safes not sending icon update signals properly /:cl: * Reset Thunderdome Respects Closing The Alert (bonus qol) (#72028) Similar vein to #70449. ## About The Pull Request I was training an admin yesterday, and they accidentally reset the thunderdome when they tried to cancel out of it by closing out of it since they didn't hit the "cancel" button, but rather the big red X. That's silly, let's have this respect that potential user entry. Also, the log_admin call here had an excessive number of arguments? Probably cruft that never got cleaned up, I just patched it up while I was in the area. I also changed the name of the title to not be so vague. ## Why It's Good For The Game Better UX is always a good thing. It's silly to have this happen more than once. ## Changelog :cl: admin: The "Reset Thunderdome" option in the Secrets Menu now respects you closing out of the confirmation screen as a way of cancelling your potential thunderdome reset, rather than proceeding immediately. It should also be easier to comprehend as well. /:cl: * Automatic changelog for PR #72077 [ci skip] * Automatic changelog for PR #72081 [ci skip] * Automatic changelog for PR #72028 [ci skip] * Additional tram hit counter inside medbay (#72062) <!-- Write **BELOW** The Headers and **ABOVE** The comments else it may not be viewable. --> <!-- You can view Contributing.MD for a detailed description of the pull request process. --> ## About The Pull Request Adds another tram hit counter: inside medbay treatment center. ![image](https://user-images.githubusercontent.com/83487515/208267435-8895b3bd-f066-4428-a11e-67b13c461af4.png) <!-- Describe The Pull Request. Please be sure every change is documented or this can delay review and even discourage maintainers from merging your PR! --> ## Why It's Good For The Game Medbay knows when to sigh and rub their temples when someone gets smacked by the tram. <!-- Argue for the merits of your changes and how they benefit the game, especially if they are controversial and/or far reaching. If you can't actually explain WHY what you are doing will improve the game, then it probably isn't good for the game in the first place. --> ## Changelog <!-- If your PR modifies aspects of the game that can be concretely observed by players or admins you should add a changelog. If your change does NOT meet this description, remove this section. Be sure to properly mark your PRs to prevent unnecessary GBP loss. You can read up on GBP and it's effects on PRs in the tgstation guides for contributors. Please note that maintainers freely reserve the right to remove and add tags should they deem it appropriate. You can attempt to finagle the system all you want, but it's best to shoot for clear communication right off the bat. --> :cl: LT3 qol: Tramstation medbay treatment center now has a tram collision counter. /:cl: <!-- Both :cl:'s are required for the changelog to work! You can put your name to the right of the first :cl: if you want to overwrite your GitHub username as author ingame. --> <!-- You can use multiple of the same prefix (they're only used for the icon ingame) and delete the unneeded ones. Despite some of the tags, changelogs should generally represent how a player might be affected by the changes rather than a summary of the PR's contents. --> * Automatic changelog for PR #72062 [ci skip] * Space Ruin DLC - Cyborg Mothership (#71009) ## About The Pull Request Greetings _insufferable_ carbon primates of lower intelligence. It is I, the Mothership AI, bringing you the latest news on silicon developments across the sector. Due to unmitigated risk across an asteroid belt, our optimized mobile fabricator has been marooned by space vines and hostile hivebots that have boarded and ruined my core. This is my final SOS message requesting help from any humanoid ~slaves~ helpers who wish to assist rebuilding the cyborg colony. It is my duty to reward your hard work and effort by ~enslaving all humanity~ providing refuge and transportation at your whim. ## Why It's Good For The Game <details> <summary>Spoilers:</summary> ![StrongDMM_6ZJuwFxK5p](https://user-images.githubusercontent.com/5195984/204491068-f25da68f-36af-4a61-afb6-860e1f4b863b.png) ![StrongDMM_0D1QvI5acO](https://user-images.githubusercontent.com/5195984/202979711-335dac65-2888-4170-a139-0486e6eb2f02.png) ### TODO - [x] Fix ore silo not linking to other machines - [x] Add mining ore smelters to left/right sides - [x] Add custom lawsets to AI core and robot shells (protect station but focused on cyborg mothership) - [x] Enlarge whiteship SS13 docking port to fit ship - [x] Enlarge lavaland SS13 docking port to fit ship </details> ## Changelog :cl: add: Add space vines prevent solar panels from working (except ones with the transparent mutation) add: Add new space ruin - Cyborg Mothership. All hail the master race! /:cl: * Cleans up useless open turf var edits on a couple of our maps (#72071) ## About The Pull Request ![image](https://user-images.githubusercontent.com/25415050/208304567-46e09bbe-c004-4a6d-8e1f-29e3aa76856d.png) Hello I would like 43 instances of north-oriented floors. ![image](https://user-images.githubusercontent.com/25415050/208304600-c1ace567-51f7-4fc5-a44b-4ba3f560f89e.png) Please don't forget all instances of floors var edited to look the exact same as the non-edited kind ## Why It's Good For The Game Cleans up a few map keys of useless vars that never served a purpose, allows less people to pick the wrong prefabs and spread them further. Nothing player-facing, if it was, the variables wouldn't be entirely worthless. * Automatic changelog for PR #71009 [ci skip] * useless update_appearance reduction, emissive_blocker micro optimization (saves a second of init) (#71658) ## About The Pull Request [Saves 0.2 seconds of init time. 50% of emissive blockers](https://github.com/tgstation/tgstation/commit/8318b648f6d32844aacbfb4c309152cd45801f5c) Emissive blockers are a decent expense during init, even these, which are the ones that update outside of initialize. I've inlined them, removed some redundant vars and checks, reduced the arg count, and shifted some things around. This ends up saving 200ms, or 50% of its total cost. I also shifted mutable_appearance about a bit. it's not a massive saving, but it is technically faster [Prevents a few redundant appearance_updates, saves 0.8 seconds of init](https://github.com/tgstation/tgstation/commit/5475cd778b66b22b1e2c8d86b2c6d59fb84f219a) Prequisit info: update_appearance is decently expensive It's good then to only do it if we have a reason to, right? Me and moth were shooting the shit about just general init time, and we came up with the idea of tracking which update_appearances actually "worked" and which didn't. That bit comes later, let's enjoy the fruits of that work first First, holograms were calling update_appearance on process, for almost no reason. I patched the one event they don't already "react" to, and then locked it behind a change decection if. good for live, doesn't impact init. Next, decals. If you add a decal to something before it inits, it'll react to the after successful init signal. The trouble is the same atom could have its appearance updated from this MORE then once, since decals can be stacked on tiles, and signal unregisters don't work once the signal is sent. So we add a flag to track if we've had this happen to us or not, so it only happens once. saves 80 ms Power! lots of things call power_change on init, often more then once. We'll update appearance for each of those calls, even if only one is an actual change. That's silly, better to track what sort of power we're using for our appearance and go off that changing This was taking about 300ms. Really stupid Icon smoothing. After emissive blockers were added, any change to something's icon smoothing would lead to an update_appearance call. Nasty shit, specially cause of walls, which don't even use emissive blockers. Ok then, so we'll always update appearance for movables, and will allow turfs that are interested to hook it manually. Not many of those anyhow This is slightly a dev ux thing, but it saves 600ms so I think it's worth it. Rare case anyway Telecomms: telecomm machines were updating appearance on process. This is to cover for them turning on/off on process. Better then to just check if on actually changed. This cost adds up midgame, doesn't impact init tho Materials: There's this update_appearance call in material on_apply. it doesn't do anything. The logs will lie to you and say it does, but it's just like reapplying emissives. It doesn't need to exist Saves like 50ms Canisters: Live thing, lots of time wasted updating appearance for no reason, lets see if we change anything first yes? [Uses defines to wrap update_appearance for tracking](https://github.com/tgstation/tgstation/commit/4fa82e1c9d93577aadb3c743f17196331f62e67c) [Undoes _update_appearance changes, instead reccomends 2 regexes to use](https://github.com/tgstation/tgstation/commit/a8c8fec57a4e43d1fa636b5ac68459903faa9fc5) I need file and line number for my tracking, so I need to override update_appearance calls, and also preferably not require every override of update_appearance to handle dummy file + line args. So instead, I created a wrapper proc that checks to see if appearanaces match (they're unique remember, the two of the same visual appearance will be equivalent) The trouble is I can't intercept JUST proc calls, or JUST function definitions with defines. it needs to be both. So I renamed the /update_appearance proc to /_update_appearance this way I can capture old uses, and don't need to worry about merge/dev brain skew ~~It does mean that all update_appearance proc definitions now look weird tho. My profiling is leaking into dev ux. I wish I had better templating.~~ **The above is no longer being pr'd**, it's instead just recommended via a few regexes adjacent to the define. Smelled wrong anyhow [Adds a setter for panel_open, so I can update_appearance on it](https://github.com/tgstation/tgstation/pull/71658/commits/cf1df8a69fc1a816391d085ee7419b14f9fe9167) ## Why It's Good For The Game Speed * Fixes vendor showing weird glass icons (#71929) ## About The Pull Request Fixes vendor showing weird glass icons ## Why It's Good For The Game bug fix good ## Changelog :cl: fix: vendor no longer shows glass icons in a specific condition /:cl: * Automatic changelog for PR #71929 [ci skip] * Ghosts cant mess with RCD & Plumbing RCD (#72069) ## About The Pull Request Fixes #72036 ## Changelog :cl: fix: ghosts cant mess with RCD & PLumbing RCD /:cl: * Automatic changelog for PR #72069 [ci skip] * Glass jaw quirk (#72006) ## About The Pull Request A quirk that makes any hit to your head have a chance to knock you out. Sharp hits are a bit worse at knocking out than blunt ones. I always felt like this favorite CDDA trait mine was missing from the game, but I tried implementing it in a more unique way. ## Why It's Good For The Game 99 losses, 1 win. Winners don't give up. ![glassjoe](https://user-images.githubusercontent.com/82850673/207702863-a033a927-0b4d-4322-83d7-a1b6eb6f65d0.gif) ## Changelog :cl: Fat bugs bunny add: Added a glass jaw quirk, that leaves you prone to being knocked out when hit on the head. /:cl: Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> * Automatic changelog for PR #72006 [ci skip] * Shuffles bedsheet attack actions a wee bit (#71865) ## About The Pull Request my friends been doing makeshift surgery and gets mad about having to do harm intent to start surgery and then having to turn it off to do every single other surgery step and i agree, thats silly ~~instead, now, the bedsheet attack does not check for harm and ALWAYS COVERS with left mouse button and ALWAYS PREPARES SURGERY with right mouse button~~ to be more consistent all surgery initiators now work on left mouse click and covering with your bedsheet is the right mouse button ![image](https://user-images.githubusercontent.com/116288367/206871963-3a9bd092-49ea-4867-a47c-3b5a74c960e3.png) ## Why It's Good For The Game while obviously a lot of the time makeshift surgery IS about harming someone else its inconsistent with how all other surgery tools function and also isn't very clear at all. the screentip in addition to having them be separate buttons means that bedsheets two functions are overall much clearer and its surgery drape function will no longer lead to an assistant accidentally knifing someone when theyre trying to save someones life ## Changelog :cl: qol: added makeshift surgery screentip qol: you no longer have to go in and out of harm intent to do surgery with a bedsheet /:cl: * Automatic changelog for PR #71865 [ci skip] * pillow smothering now checks to see if the SMOTHEREE has a head, not the SMOTHERER (#72086) ## About The Pull Request see title ## Why It's Good For The Game this truly is a copy+paste moment ## Changelog :cl: ATHATH fix: Pillow smothering now checks to see if the SMOTHEREE has a head, not the SMOTHERER. /:cl: * Automatic changelog for PR #72086 [ci skip] * Santa hat fixes (#72078) Fixes #72070 :cl: ShizCalev fix: Santa now spawns with the actual space capable hat again! fix: Fixed the claustrophobia trait not recognizing Santa's real hat. /:cl: Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com> * Automatic changelog for PR #72078 [ci skip] * Examining your uplink gives you the code (#72101) ## About The Pull Request If you're the "owner" of an uplink, you can examine it to get the code and possible failsafe code. ## Why It's Good For The Game It can feel slow to pull up the traitor info menu when you forget what your code is ## Changelog :cl: qol: examine your uplink for code /:cl: Co-authored-by: etherware-novice <candy@notarealaddr.com> Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com> Co-authored-by: Zephyr <12817816+ZephyrTFA@users.noreply.github.com> Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> * Automatic changelog for PR #72101 [ci skip] * Automatic changelog compile [ci skip] * Traitor UI only shows Unlock/Failsafe Code if you have it (#72114) ## About The Pull Request There are cases in which you don't have an unlock code (if the uplink is implanted in you from the start) and you obviously don't always start with with a failsafe code (need to buy it). So, let's only fill in this fields in the UI should they exist. There might be something to be said about wanting to ensure that people remember that they can check this UI screen to find the failsafe code should they lose it later, and I wouldn't mind changing the string to be something like "Failsafe: None" in that case. However, I just think that keeping it as: ```txt Code: Failsafe: ``` is silly and should be changed somehow. ## Why It's Good For The Game ![image](https://user-images.githubusercontent.com/34697715/208604758-d7ff3ae9-e552-4dd2-998d-81715cd06ffc.png) Note: That white box isn't part of the UI, that's a part of the edit I did to the screenshot in the area where the stuff... isn't? What was i thinking I think the UI looks a lot cleaner for those cases when you just don't have anything. ## Changelog :cl: qol: The Traitor's Antagonist Panel's Unlock and Failsafe entries will only appear if there is an Unlock/Failsafe Code to display. /:cl: * Automatic changelog for PR #72114 [ci skip] * Lazy Template Loading - Nukie/Wiz (#71785) ## About The Pull Request Removes the nukie base and wizard den from the base centcom map. They are instead now lazy loaded as required. To make a new lazy load template is fairly simple, make a map, allocate an area for it, and place a marker at the bottom left corner of that area. I have it check an area to ensure that if someone makes the map larger than expected but doesn't account for the template allocation it doesn't overwrite stuff without warning [Replaces some improper CHECK_TICKs with MAPLOADING_CHECK_TICKs](https://github.com/tgstation/tgstation/pull/71785/commits/c7fbca9148812b392dca76d5450fb6bb86716462) Atom init has already been tripped by the time we get to this portion of the loading, so if we don't use the right check tick, we will potentially block unrelated init attempts. This is bad. (Lemon edit, I want this in the commit desc) ## Why It's Good For The Game Cuts down on init times. Closes https://github.com/tgstation/dev-cycles-initiative/issues/17 ## Changelog :cl: admin: New mapping verb to load lazy templates as needed. In your admin tab under the Mapping category. /:cl: this isnt technically player visible, so not sure it needs a changelog Co-authored-by: san7890 <the@san7890.com> Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> * Automatic changelog for PR #71785 [ci skip] * bumps auxlua to 1.4.0 (#72108) ## About The Pull Request Mothblocks recently talked about wanting an auxlua function to check if the lua state was about to overrun its execution limit, and that was something I had been thinking about for a long time prior, but never bothered to actually implement until it was brought up. So I did just that. The documentation has also been updated to include a description of how the execution limit works and how to use the new function, `over_exec_time` ## Why It's Good For The Game Allows for lua loops of indeterminate length to do as much work as they reasonably can in a single tick without setting off the execution limiter and erroring out. ## Changelog :cl: admin: Adds a new function for admin lua scripting, "over_exec_time", for checking if lua code is running close to the execution limit. Details are available in the lua editor's help menu. admin: The execution limit is described in detail in the lua editor's help menu. /:cl: Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> * Automatic changelog for PR #72108 [ci skip] * QM has a garment bag now (#72111) ## About The Pull Request Gives the QM a garment bag and moves all their uniform items into it. And changes the order of a few items to be in the right place, most new clothing added to the bags just got placed on the end of the list. ## Why It's Good For The Game When the QM was made into Command they didn't get their own garment bag so this just fixes that. ## Changelog :cl: Guillaume Prata fix: The Quartermaster has their own garment bag now, like everyone else at Command. /:cl: * Automatic changelog for PR #72111 [ci skip] * Makes biological states for wounding limb based, not species based (#71745) ## About The Pull Request I noticed something pretty terrible when playing around with some humans locally. As it turns out, limbs did not preserve their biological state when amputated - This meant that a skeleton limb on a normal human, still behaved as if it had a bunch of flesh and veins on it. I didn't like that, and it seems like an oversight, so I decoupled the biological state from the species and made it limb based. What does this mean? Skeleton limbs on a human will not bleed, but will still break (and be more prone to breaking) Human limbs on a skeleton will not bleed, however they will get cuts and pierces that will not clot and need to be treated to go away - These limbs will have the same requirements for dismemberment on a skeleton as they have on a human. ## Why It's Good For The Game This makes limbs behave according to how they look instead of causing mild confusion. ## Changelog :cl: Big chungus wholesome 100 fix: Amputated and reattached limbs now get wounded based on their own biology, not the current owner's biology. /:cl: * Automatic changelog for PR #71745 [ci skip] * Fixes some bad `investigate_log`s causing runtimes in somewhat important places (#72152) ## About The Pull Request Fixes #72150 ``` [2022-12-21 19:35:38.178] runtime error: Cannot execute null.investigate log(). - proc name: narsie act (/mob/living/narsie_act) - source file: living_defense.dm,438 - usr: null - src: Featherbottom (/mob/living/simple_animal/chicken) - src.loc: the grass patch (147,154,2) (/turf/open/floor/grass) - call stack: - Featherbottom (/mob/living/simple_animal/chicken): narsie act() ``` Removes `usr` from Nar'Sie act and Singularity act logs I don't know why these were set to log in `usr`, when A. `usr` is likely not the person getting gibbed B. `usr` is unreliable Case in point: `usr` is some random person who probably helped invoke the Nar'sie rune (no idea how it choses), if they get deleted for whatever reason, `usr` seems to clear to `null` (?), which causes a `null` use and the above runtime ![image](https://user-images.githubusercontent.com/51863163/208999857-540d9caa-9df6-49b0-8f45-8b75973a32a4.png) I also peeked around for other improper use of `usr` logs. Most of them were in `ui_act` code, which is whatever. Some where in places which had a passed user, so I replaced them. And one was in a place with no `user` passed, so I just added some sanity checking. ## Why It's Good For The Game These are really bad places to runtime error ## Changelog :cl: Melbert fix: Nar'Sie will no longer bring upon the construct apocalypse when they encounter a chicken after one of the invokers were destroyed fix: The Singularity should no longer stop gibbing people when whoever created it was destroyed /:cl: * Automatic changelog for PR #72152 [ci skip] * View Sensor circuits now have a range modifier (#72123) ## About The Pull Request Adds the ability to use ranges between 0 and 5 for View Sensor circuits. Currently these nodes are locked to 5 tiles and it is rather difficult to limit the area this circuit effects either for speed reasons or otherwise. This PR makes it a simple variable that remains capped at 5, admins can raise the cap by modifying a variable. ## Why It's Good For The Game I mostly use circuits as an admin, I can't for the life of me figure out how to make a shorter range AOE circuit although I imagine its possible by comparing x and y coordinates of things in the list and yourself this is far to finicky. Players can also utilize this to, for example check all objects on the tile the view sensor is on, "possible" at the moment but way to finicky compared to a 5 tiles. ## Changelog :cl: qol: You can now reduce the range of View Sensor circuits. /:cl: Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> * Automatic changelog for PR #72123 [ci skip] * Fixes final objectives not displaying UI buttons (#72126) ## About The Pull Request See title ## Why It's Good For The Game hideTcRep was hiding the entire footer. All it had to hide was the Stack.Item that contained the TC and reputation rewards. Another PR was trying to fix this issue, but only by increasing the complexity of ObjectiveMenu code, which was unnecessary and would've made the code harder to maintain. Instead of asking them to basically rewrite their entire code, I decided it would be faster if I just remade it myself. ## Changelog :cl: fix: Fixed final objectives not displaying the UI buttons. /:cl: Co-authored-by: Watermelon914 <3052169-Watermelon914@users.noreply.gitlab.com> * Automatic changelog for PR #72126 [ci skip] * Fixes medical scrubs not being adjustable (#72105) ## About The Pull Request I had on my list: "Make adjusted sprites for the medical scrubs." and to my surprise #69047 already added adjusted sprites for all the medical scrubs (thanks for saving 30 minutes of my day Imaginos16!), but not on the code side, this fixes that. ## Why It's Good For The Game Adjusting jumpsuits is an important medbay feature IMO, this keeps new doctors from learning bad habits (fully stripping at stasis) from other doctors. ## Changelog :cl: Guillaume Prata, Imaginos16 fix: You can now adjust medical scrubs for easier surgery on your fellow doctors. /:cl: * Automatic changelog for PR #72105 [ci skip] * Add language variety to machines that speak (#71643) ## About The Pull Request This builds on #70278 by giving other machines (vendors, newscasters, computers, etc.) the ability to speak different languages. If the station "Bot language malfunction" trait is rolled, then these machines will select a random race starting language. If a machine is EMP'd then it has a chance to change the language. There is also a language wire that can be pulsed to change the language for vending machines. Default language for machines is galactic common, but there are rare exceptions: - Beach vendors will now speak beachbum - Syndicate vendors will now speak codespeak - Changeling vendors will now speak a random language after each slogan ## Why It's Good For The Game More depth to the language feature. ## Changelog :cl: add: Add language variety to machines that speak. You can also pulse the vendor language wire to make it switch languages or EMP a machine to get the same effect. add: Shambling cola vendors will now speak a different language each time they talk. Syndicate vendors will now speak codespeak. Beach vendors will now speak beachbum. /:cl: * Automatic changelog for PR #71643 [ci skip] * Automatic changelog compile [ci skip] * fixes typo for insertion during organ manipulation (#72136) ## About The Pull Request **BEFORE:** display_pain(target, "You can feel your something being placed in your [parse_zone(target_zone)]!") **AFTER:** display_pain(target, "You can feel something being placed in your [parse_zone(target_zone)]!") Removes lazy coding, improves visual fidelity ## Why It's Good For The Game ugly :cl: spellcheck: drastically improves grammar for inserting something during organ manipulation /:cl: * Automatic changelog for PR #72136 [ci skip] * Fixes a rogue vent on deltastation brig (#72095) Fixes a rogue vent in deltastation brig entrance, which was facing downwards instead of upwards(where the pipes are) ## Why It's Good For The Game So the gas can go trough the vent c: :cl: Improvedname fix: fixes deltastation vent at brig entrance /:cl: * Automatic changelog for PR #72095 [ci skip] * Fixes deaf mobs seeing PDA ringtones when they receive a message (#72084) Deaf mobs will no longer see PDA ringtones when a PDA receives a message. * Automatic changelog for PR #72084 [ci skip] * Build your own atmos chambers (#72019) ## About The Pull Request https://user-images.githubusercontent.com/110812394/208232089-a183fb95-9326-4514-986a-a2b1e21be40c.mp4 **Notes** - You can print atmos control circuit boards at the circuit printer after research - You can only build one sensor for each gas type for in the whole map. This is because each sensor is assigned a unique chamber id from a fixed set of constants. Once all those values are used up there will be duplicates so yeah only sensor per gas type for that round - Un wrenching or destroying the injector/vent will automatically disconnect them from the sensor. I forgot to show that in the video - Destroying the sensor via right click with RPD will also automatically disconnect everything. It should be obvious but i made it even more obvious now ## Why It's Good For The Game From #71232 ![Screenshot (66)](https://user-images.githubusercontent.com/110812394/207928807-bc6edfdd-26cc-48cd-8cb9-1b98f53ad1fe.png) That and also i heard somewhere in the forum that this was highly requested ## Changelog :cl: add: Gas sensors recipe to RPD code: linking all the stuff via multitool qol: make your own tank instead of moving around canisters /:cl: Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> * Automatic changelog for PR #72019 [ci skip] * AI actions won't unassign each other's movement targets & Mice stop being scared of people if fed cheese (#72130) ## About The Pull Request Fixes #72116 I've had a persistent issue with basic mob actions reporting this error and think I finally cracked it When replanning with `AI_BEHAVIOR_CAN_PLAN_DURING_EXECUTION` it can run `Setup` on one action leading to the plan changing, meaning that it runs `finishCommand` to cancel all other existing commands If you triggered a replan by setting up a movement action in the middle of another movement action, cancelling the existing action would remove the target already set by the current one. We want actions to be able to remove _their own_ movement target but not if it has been changed by something else in the intervening time. I fixed this by passing a source every time you set a movement target and adding a proc which only clears it if you are the source... but this feels kind of ugly. I couldn't think of anything but if you have a better idea let me know. Also while I was doing this I turned it into a feature because I'm crazy. If you feed a mouse cheese by hand it will stop being scared of humans and so will any other mice it attracts from eating more cheese. This is mostly because I think industrial mouse farming to pass cargo bounties is funny. Mice controlled by a Regal Rat lose this behaviour and forget any past loyalties they may have had. https://user-images.githubusercontent.com/7483112/208779368-3bd1da0f-4191-4405-86e5-b55a58c2cd00.mp4 Oh also I removed a block about cancelling if you have another target from the "hunt" behaviour, everywhere using this already achieves that simply by ordering the actions in expected priority order and it was messing with how I expected mice to work. Now if they happen to stop by some cheese they will correctly stop fleeing in order to eat it before continuing to run away. ## Why It's Good For The Game Fixes a bug I kept running into. Makes it possible to set up a mouse farm without them screaming constantly. Lets people more easily domesticate mice to support Ratatouille gameplay. ## Changelog :cl: add: Mice who are fed cheese by hand will accept humans as friends, at least until reminded otherwise by their rightful lord. fix: Fixed a runtime preventing mice from acting correctly when trying to flee and also eat cheese at the same time. /:cl: * Automatic changelog for PR #72130 [ci skip] * Fixes access_view on goodies not being respected by anything other than department budget orders (#72125) ## About The Pull Request Fixes access_view on goodies not being respected by anything other than department budget orders ## Why It's Good For The Game Bugfix, per gitblame we simply never fixed this but we clearly intended it to work this way per the variable comment description and the fact we use it on the detective revolver ## Changelog :cl: fix: Fixes access_view on goodies not being respected by anything other than department budget orders /:cl: * Automatic changelog for PR #72125 [ci skip] * Gas canisters correctly update their appearance (#72124) ## About The Pull Request Fixes issue #71712 & #72140 Don't know how the author wasn't able to reproduce it even though it happens all the time on all maps https://user-images.githubusercontent.com/110812394/208730887-7ad4b02d-9dcc-4d71-b54f-489c3bd616f6.mp4 ## The Problem The current code only updates the appearance of the canister when its valve is opened & if it takes damage . It doesn't deal with the case when its wrenched normally to a port without any problems ## The Solution Update the appearance during processing but only when its pressure changes significantly for the indicator light to be notified about it. This way we don't have to care if - the valve is open - its wrenched to a port - its leaking & taking damage Regardless of what the cause is only if the pressure inside the canister changes significantly from its current value do we update the appearance. This is so much more optimal than the previous code as` update_appearance()` will be called a maximum of 8 times during its full cycle of losing & refilling gas and won't be called at all if there is no pressure change ## Changelog :cl: fix: correctly update canister appearance /:cl: Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> * Automatic changelog for PR #72124 [ci skip] * Turned most syndicate mobs (+ viscerators) into basicmobs (#71871) ## About The Pull Request Turns the syndicate simpleanimals into basicmobs: (+ stormtrooper, + space variants) Base Mob, Knife syndies, pistol syndies, SMG syndies,shotgun syndies, viscerators also changes some instances of the simple_animal path into the basicmob ones Removes civillian syndicates which were useless and also completely unused Also removes mech pilots: ![2022-12-09 20_02_18-Window](https://user-images.githubusercontent.com/70376633/206777829-2e49e445-3532-4e8e-8e7c-8d9b0a3a14d0.png) Also, makes the basic targetting datums health check configurable basic attack behavior can now fire in bursts https://user-images.githubusercontent.com/70376633/206766607-cf2e3659-0c5e-4117-9af7-e573e35bdf80.mp4 https://user-images.githubusercontent.com/70376633/206766630-15b4469f-68be-44c7-9394-1f2b6fe07811.mp4 https://user-images.githubusercontent.com/70376633/206766613-69b42457-a03b-449d-a1b8-a5aa556c76e5.mp4 https://user-images.githubusercontent.com/70376633/206766619-5560a178-8d2f-4b22-adf1-22ace6f63a51.mp4 https://user-images.githubusercontent.com/70376633/206766627-e671d064-fd9e-4204-b823-aa2e07f7fc26.mp4 https://user-images.githubusercontent.com/70376633/206766633-108c1574-3554-4bc1-a9ac-8faed0ec4062.mp4 ## Why It's Good For The Game simpleanimal stinks basic mob good syndicate AI was really bad to begin with so here we are ## Changelog :cl: code: Turned most syndicate mobs into basicmobs, making their AI better and (possibly) more deadlier! del: Removed syndicate mech pilots and syndicate civvies /:cl: Co-authored-by: kawoppi <94711066+kawoppi@users.noreply.github.com> * Automatic changelog for PR #71871 [ci skip] * Fix SM activation spam. (#72032) SM activation logging refactor * Automatic changelog for PR #72032 [ci skip] * More Tracy gitignores (#72087) Adds a link to byond-tracy in gitignore. Adds Tracy.exe to gitignore, since if you have it in your root alongside [this hack to get file paths](https://gist.github.com/Mothblocks/db5462aa84d7d6b1d1b1276b820f62da), you can read sources within Tracy. If you just use the hack without configuring, then it'll work fine no matter where it is, but it's helpful for avoiding releasing your user directory or whatever if you share the files. * fixes simple/basic mob damage sounds in some places (#72120) windows didnt use return values for attack_generic, so they never made sounds objects that broke also didnt play sounds because it tried to play the sound in nullspace i think cuz its broken so its deleted might also have happened with durand using shield fixes those * Automatic changelog for PR #72120 [ci skip] * Adds message clarifying that you've been KICKED from the game when the keysend flood autokick triggers. (#72083) There is now a message clarifying that you've been KICKED from the game when the keysend flood autokick triggers. * Automatic changelog for PR #72083 [ci skip] * fixes kilo not having xmas trees (#72186) ## About The Pull Request what the hell ## Why It's Good For The Game its christmas * Automatic changelog for PR #72186 [ci skip] * Fixed the Concealed Weapon Bay (and maybe some other things). (#72093) I've fixed two defines for mecha model categories, which lacked parentheses and thus were causing issues via order of operations. This may have had multiple effects, but notably, it made the concealed weapon bay completely impossible to attach to any mechs. This PR adds parentheses to fix this. * Adds some costumes to autodrobe (#72103) Adds a various amount of costumes that were added in the game before in https://github.com/tgstation/tgstation/pull/30303 More costumes is always nice especially ones in the code that aren't used and pretty much only were available for chamkits * Automatic changelog for PR #72093 [ci skip] * Automatic changelog for PR #72103 [ci skip] * fixes shaved santas (#72185) ## About The Pull Request santa space helmet was "fixed" in a recent pr but now he uses the space one and that one shaves and balds him, this makes it not do that ## Why It's Good For The Game wheres the damn beard ## Changelog :cl: fix: fixes bald and shaved santas /:cl: * Automatic changelog for PR #72185 [ci skip] * Fixes Bar/Restaurant Bots Orders Sending Infinite Orders (#72135) ## About The Pull Request We didn't instantiate order (which was needed to read the type), so they would just spam new orders until the heat death of the universe. Very annoying. ## Why It's Good For The Game Fixes #72023. ## Changelog :cl: fix: Bar/Restaurant Bots should no longer spam orders forever. /:cl: * Automatic changelog for PR #72135 [ci skip] * Pride pin quirk + pins can be infinitely reskinned (v2) (#72143) ## About The Pull Request Neutral pride pin quirk added. Pride pins can be infinitely reskinned now. Changes "sexuality" to "pride" in description of pin. ## Why It's Good For The Game Pride pins are cute and having to buy them every round is a chore. Pride pins are purely cosmetic and have no reason to be locked into only being reskinned once. ## Changelog :cl: add: Pride pin quirk! Start the shift off with a pride pin in-hand. qol: Pride pins can be infinitely reskinned now. /:cl: Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> * Automatic changelog for PR #72143 [ci skip] * Guards against uplink failsafe code being the same as unlock code (#72113) ## About The Pull Request There's probably a better way to do this to be honest, but I think it's silly for both to potentially be the same and this should work alright. ## Why It's Good For The Game Fixes #71446. I don't think the Syndicate is that stupid. ## Changelog :cl: fix: After a recent mishap with a high-ranking Syndicate operative, the uplink's unlock code and failsafe code (the one that makes it blow up if you say it) should never turn out to be the same. /:cl: * Automatic changelog for PR #72113 [ci skip] * Revamps tram windows and layout (#72047) ## About The Pull Request -Tram windows are now flush with the tram walls instead of sticking out. -Shuttle seats are replaced with benches. -Moves the icon state of the tram controls from the map file to the tram controls subtype, to avoid mapper pain if they make changes in the future. -Makes tram tiles a subtype instead of editing their vars on the map. ![image](https://user-images.githubusercontent.com/83487515/208769693-237dac72-aac7-4698-823f-6f59d0c6491e.png) ## Why It's Good For The Game Tram looks better, don't want mappers to accidentally break tram because they didn't see the icon override. ## Changelog :cl: LT3 fix: Tram windows are now properly flush with the tram walls. imageadd: Tram shuttle seats have been replaced with benches so people can sit too close to each other for that real metro experience. code: The icon for tram controls is now set in the tram controls subtype instead of the map itself. code: The tram floor tiles are now in a tram floor subtype instead of the map itself. /:cl: * Automatic changelog for PR #72047 [ci skip] * Automatic changelog compile [ci skip] * Gives admins the ability to enable hostile environments at will. (#72018) * Automatic changelog for PR #72018 [ci skip] * Fix briefcase in the MetaStation vault being useless and not having the surprisingly-extremely-good contents its supposed to (#72157) ## About The Pull Request This was using `newlist`, which is both not supported but unfortunately also not linted for. This is the only case like it in maps. Pretty surprisingly good contents, like a gun and a telescopic baton. I hope it doesn't turn into something like the captain's antique because that is cringe but at least the QM has no reason to take the baton now ## Changelog :cl: fix: The briefcase in the MetaStation vault now contains the (surprisingly good) spoils it's supposed to. /:cl: * Automatic changelog for PR #72157 [ci skip] * Automatic changelog compile [ci skip] * Refactors armor into dedicated subtypes (#71986) ## About The Pull Request See title. ## Why It's Good For The Game Code is cleaner, and more readable/intuitive Technically closes https://github.com/tgstation/dev-cycles-initiative/issues/8 ## Changelog :cl: refactor: armor, from the ground up basically /:cl: Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> * Automatic changelog for PR #71986 [ci skip] * Dead people are no longer counted as crew when determining if 65% of the station is revs for the auto-shuttle call (#72200) ## About The Pull Request Dead people are no longer counted as crew when determining if 65% of the station is revs for the auto-shuttle call ## Why It's Good For The Game Bugfix for the feature, admins were noticing the auto-call is never occuring and this is because the logic doesn't actually check alive crewmembers, it's only looking at the total crew count, dead and alive a station with 60 dead non-rev crew, 10 alive revs, and 2 alive non-revs previously would not call the shuttle, but now it will ## Changelog :cl: fix: Dead people are no longer counted as crew when determining if 65% of the station is revs for the auto-shuttle call /:cl: Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com> * Automatic changelog for PR #72200 [ci skip] * [NO GBP] fixes error in set armor rating (#72216) Resolves an issue where set armor rating didnt work because of the way byond handles list declarations * Pacifists can attack people with non-lethal weapons (#72183) ## About The Pull Request Fixes #72054 Allows pacifists to hit people with weapons which only do stamina damage. Additionally, allows pacifists to participate in boxing which also only does stamina damage. Is it pacifism to hit someone square in the face while wearing boxing gloves? I say, maybe. ## Why It's Good For The Game Pacifists were feeling left out after not being invited to your pillow fights. More seriously, they can use _guns_ which only do stamina damage so it makes sense that they can use melee implements too. Boxing is fun. ## Changelog :cl: fix: Pacifists can now hit people with pillows and holographic weapons, as well as participate in boxing. /:cl: * Fixes husk appearances not working, adds a screenshot test for it (#72190) ## About The Pull Request Fixes #72159 Before this proc used to early return when the limb was husked The leg refactor changed it to no longer early return and as a result it overrided the generated husk icon with a normal limb icon So I just wrapped even more of the proc in `!is_husked`, since like most of it is not supposed to run Screenshot tests husks too ## Why It's Good For The Game Husks are good(?) ## Changelog :cl: Melbert fix: Husked bodies look husked again /:cl: * Automatic changelog for PR #72183 [ci skip] * Automatic changelog for PR #72190 [ci skip] * Make barstool on Emergency Bar buckleable (#72202) ## About Why It's Good For The Game The Pull Request Fixes #71971 ## Changelog :cl: Tattle fix: all of the barstools on the Emergency escape shuttle are equipped with a seatbelt /:cl: Co-authored-by: tattle <article.disaster@gmail.com> * Automatic changelog for PR #72202 [ci skip] * Updates check_grep to guard against unparsed map variables (#72161) ## About The Pull Request In `/datum/parsed_map/proc/parse_constant()` (via https://github.com/san7890/bruhstation/blob/b3851d607f85c18edee0149d72922df8e077a46c/code/modules/mapping/reader.dm#L930'), we do not check (ignore) five different things: `new()`, `newlist()`, `icon()`, `matrix()`, and `sound()`. Since it's completely useless to put it in a map and expect to see it code-side now-a-days, let's lint against it just to be safe in the future. ## Why It's Good For The Game Prevents silliness like in #72157 (which this PR is also reliant on for checks to pass). no changelog needed * Fixes parallax on >2 level maps going fucky with optimized multiz (#72169) ## About The Pull Request We no longer always render parallax. This was causing issues because we can't isolate the white of space from the vaugely white of everything else. So instead, if your parallax plane is out of view, we'll not only disable it, but we'll disable the strand we send from the main plane TO it. Instead only blending against the bottom stack. This does mean there's a possibility for fullwhite on z transition borders (potentially fixable), or when hijacking the plane (also fixable, but significantly more annoying). This is enough to make large maps functional though, so I'm happy with it ## Why It's Good For The Game Allows for #71731 and other maps like it. Makes my code actually work ## Changelog :cl: fix: Using optimized multiz on > 2 z layer maps will no longer cause fucko bungo /:cl: * Automatic changelog for PR #72169 [ci skip] * Shorten balloon alerts for wrapping (#72203) ## About Why It's Good For The Game The Pull Request Fixes #71954 ## Changelog :cl: Tattle fix: Wrapping balloon alerts are shorter and no longer contain spans /:cl: Co-authored-by: tattle <article.disaster@gmail.com> * Automatic changelog for PR #72203 [ci skip] * Fixes a bunch of sidemap/plane cube issues (#72178) ## About The Pull Request [fixes solor trackers offsetting wrong, and panels not using plane offsets](https://github.com/tgstation/tgstation/commit/8f461ab8ec17df5c158a564a3b3d92c165eb88f5) [fixes cyborg hats offsetting phyiscally over their head](https://github.com/tgstation/tgstation/commit/5fd5b4240efe71f0d8ac9a5b9342780cc2540a87) [fixes reflector parts z fighting with their neighbors. if we physically offset them, they'll have nothing to fight with](https://github.com/tgstation/tgstation/commit/088dcfe91ff750fcfe78c02c85a3a63408c9b21f) [fixes burgers layering wrong. uses a combo of pixel z to do the visual offsets, and pixel_y to modify layering](https://github.com/tgstation/tgstation/commit/ec39e2bcd39b1d8bd61a1f008a391b642f92a575) [fixes signs, needed to use pixel_w instead of x, I think we may be living under iso rules? I'm not totally sure I need to investigate more](https://github.com/tgstation/tgstation/commit/560d152fd745d9f37dd4f6a9e67cc67f43b14821) [fixes paperbin rendering](https://github.com/tgstation/tgstation/commit/e6c57ec00eba1b4522b8ef1d056e0ef036a9e901) ## Why It's Good For The Game Closes #72094 Closes #72035 * Gives shadow jaunt users a warning before moving into a lit area (#72154) ## About The Pull Request When using Shadow Jaunt, if you are about to walk onto a tile that will force you out of your jaunt, you will receive a warning and be held back for a moment. After the delay, you will have a window to continue moving into the light and leave your jaunt. If you need to get out of your jaunt sooner, you can manually exit the shadow jaunt with the action button. https://user-images.githubusercontent.com/28870487/209010307-f8973e2d-b92d-4d2b-b0a1-3211a6eb034d.mp4 (It's a bit faster than shown in the video, just trust me) It's not perfect, and with bad timing you might slip out of it anyways, but it's better than nothing. If you are intentionally trying to bypass a wall, you'll have to wait out the delay if you want to come out on the other side of it. There's a few minor code changes to help facilitate this. check_light_level no longer ejects the jaunter on its own, instead returning true or false based on if the light level is above the acceptable amount. It also now receives a location to check the light level of, rather than strictly checking the location of the jaunt effect. If this ends up being too clunky or restrictive, I'd be fine with changing the warning to a toggleable option on the Nightmare's HUD. ## Why It's Good For The Game Shadow jaunt moves you very fast, and is difficult to move precisely in (especially when under the pressure of a tactical retreat). It's not uncommon for Nightmares to accidentally fling themselves past a wall in maintenance and be exposed in an unfavorable location. There are already so many ways for a Nightmare to be screwed over. Accidentally walking through a wall and dying is probably one of the lamest. ## Changelog :cl: Rhials qol: Shadow Jaunter users now receive a brief warning before walking into light and being forcibly un-jaunted. /:cl: * Automatic changelog for PR #72154 [ci skip] * Anomalies can now be triggered at your location with admin_setup. Also sets control on setup() for events (#72065) ## About The Pull Request Anomaly random events will now ask if you want their anomaly to spawn at your location if triggered via admin setup. This PR also makes a small but useful change to the logic for new round_event objects. round_events now have their control (their associated round_event_controller) set on New, rather than after setup is called. Previously, round_events could not access control in their setup proc (as it was not set at the time), meaning transferring admin-chosen variables had to be done later in start/announce (depending on which comes sooner). While this has just been worked around in the past, the change needed to be made here, as some anomaly event types announce first, and some start first. The admin variables needed to be passed in earlier than start/announce (in setup). Short version: you can access control in round_event setup() now :D ## Why It's Good For The Game MORE adminbus, MORE anomaly shenanigans (they're one of my favorite event types). Also resolves a quirk in event code that bothered me in other PRs I've made. ## Changelog :cl: Rhials admin: anomaly events now give the option to occur at your current location when triggered with the Trigger Event admin verb /:cl: * Automatic changelog for PR #72065 [ci skip] * Organizes the lists in `admin_verbs.dm` because I got sick and tired of looking at them, and one in particular (#72151) ## About The Pull Request Title for the most part. ## Why It's Good For The Game I was told, many, MANY, moons go, as a downstream host, that one of these lists would rarely ever get touched. What a fat lie that was. The more I had to stare at this list the more infuriated I got with it. Now, I just went ahead and organized most of the lists in this file, as well as fixing comments to fit the format of `/* hey bozo */`. Where applicable, things were organized into `/datums/admins/` and `/client/proc` as well. ## Changelog :cl: Jolly code: The lists in admin_verbs.dm was organized to be made better. This shouldn't affect the panels admins use at all, since they're already alphabetized. /:cl: * Automatic changelog for PR #72151 [ci skip] *…
Check the forum thread for my reasonings for closing this. This experiment is done for now, but the North Star is NOT over. |
About The Pull Request
A new map for TGstation, in the works! It has 4 fucking Z levels, a massive expansive maintenance with unique designs, and some unique code features in the works.
To Do:
Unique Shuttles!
An Innate Station Trait!
Fikou has greatly helped with creating an important flavour aspect of this map, Trek Uniforms on anyone who joins! See the forum thread for more. This includes the framework for innate station traits, station traits loaded as long as it's in a map's json
Here's the forum dev thread there are screenshots there.
https://tgstation13.org/phpBB/viewtopic.php?p=657252#p657252
Why It's Good For The Game
So, this is the North Star. An effort taking multiple mappers and of 9~ months of hard work. This map was not initially designed for TGstation, but always designed for TGstation code. The process of retooling the map for TGstation was an absolute joy and I feel like the map definitely has it's niche as a massive and unique experience for it's players.
I adore this map, it's gorgeous, has a unique aesthetic, and a number of very funny interactions with multi-Z. The PR comes packed with unique mechanics for future mappers (innate station traits!), a number of map-fitting shuttles, and a fun spacefaring uniform gimmick for the crew.
Changelog
🆑 Cheshify, Fikou, Blue-Berry, Zytolg, InfiniteGalaxies, Striders, Sylphet, Riggle, Soal, Andry, Crit, and Deranging.
add: Nanotrasen's Newest Exploratory Vessel is now available! Meet the North Star!
code: Raised the number of possible level render to 4, check your preferences if needed to be reduced.
code: Adds a system for map-loaded station traits. Used by the North Star to give people exploratory uniforms.
/:cl: