* Medipen Reagent Examine Text Remaster 2: The Electric Boogaloo (#69723)
* new medipen examine, petty_string remaster
Adds a new, allergic reaction reducing description to the medipen, as well as a remastered petty_string for reagents which makes it much more modular.
* Medipen Reagent Examine Text Remaster 2: The Electric Boogaloo
Co-authored-by: 567Turtle <91508746+567Turtle@users.noreply.github.com>
* Changes reagentscanner circuit component to use Table (#69745)
Changes components\atom\reagentscanner to use table list from Assoc list.
Added purity output to components\atom\reagentscanner.
At time of making this its impossible to iterate through the output of reagentscanner via loops or numerical index and to determine the amount or the reagent scanned you needed to know its associated value which is less than idea.
Queried this issue on coderbus meeting 3 then asked Watermelon and he agreed that a change would be good.
Added a "purity" to the table outputs to make shells of this component "desirable" to chemistry who need to use Ph_meter to check exact purity. If this not allowed I’m willing to make an \atom\reagentscanner\adv variant that will comparable to Ph_meter.
I intend to give the same treatment to materialscanner.
* Changes reagentscanner circuit component to use Table
Co-authored-by: Dmeto <75919495+Dmeto@users.noreply.github.com>
* Ai interact uses is_valid_z_level helper (#69759)
* Makes AI can_interact_with use the valid z level helper
* Makes AI's ``can_interact_with`` proc use ``is_valid_z_level`` instead helper instead of manually doing it.
* Minor code improvement while im here 👍
* Ai interact uses is_valid_z_level helper
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* fixes an extraneous possessive s from the cult heal feedback spell (#69819)
spellcheck: Fixes a typo in the cult heal spell feedback message.
* fixes an extraneous possessive s from the cult heal feedback spell
Co-authored-by: Rhials <Datguy33456@gmail.com>
* Fixes a couple simple issues with interactability (#69762)
first things first, back when LemonInTheDark changed the interact_range code he did a slight modification that broke the AI cards, namely, he did this (not saying its a bad change, it is actually a good change, just mentioning what change caused the issue im fixing now):
now, his change does make sense, since he changed the range default to 0 instead of 1, however "null" is also used as a range, specifically for AIs, now this normally isnt an issue for the AI itself, as the AI generally gets a TRUE in its interaction checks before it gets down this deep (machines have a bypass specifically for AI), but there is one situation in which it does go this deep: AI Cards, when in an AI card the AIs interaction range is set to 0 and their interaction is disabled, thereby making it impossible for them to interact with anything, now when a player opens the card UI and enables the AIs ability to interact, this sets their range back to null, aka unlimited, the issue now however, is that since "null" is treated the same as "0", and AIs in cards dont hit the same bypasses an AI core does, Lemons change to submit a false return for 0, is also submitting false for null, meaning the AI card cannot interact with anything except the tile its on, despite having null/unlimited range....
fixed by changing the null value to infinity where it is used
additionally my fix of can_interact() code apparently had the unintended side effect of not allowing rotations of machines if theres no power, i missed this entirely because thats such a specific situation, since you try rotating with APC power in most cases, it also didnt affect most machines, that said the fix was simple, just changed the proc being called to only check distance, not power. fixes#61852
and last but not least, fixes some code with the syndie bombs interactability, namely removes a redudant section, and adds a check for range, turns out there were no checks for range so you could in theory open the UI and walk away and then activate it from another location, so added a quick check to ensure you actually CAN interact with it before letting you push buttons in the UI
* Fixes a couple simple issues with interactability
Co-authored-by: 小月猫 <alina.r.starkova@gmail.com>
* Silences gravgen admin alerts / logging when the round is not in progress (#69802)
Just silencing minor nuisance messages.
admin: Silenced grav generator admin warnings / logging messages when the round is not currently in progress.
* Silences gravgen admin alerts / logging when the round is not in progress
Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
* Removes an unnecessary period from deadchat event announcements (#69800)
About The Pull Request
Removes the period after the name of an event in the deadchat announcement (eg "Bad Thing. has just been randomly triggered!")
Why It's Good For The Game
It looks ugly and needs to be cleaned up
* Removes an unnecessary period from deadchat event announcements
Co-authored-by: Thunder12345 <Thunder12345@users.noreply.github.com>
* ADDITIONS
* Additions with icons now
* obsolete removal and replacement
* moves next step items, leaves myself notes on the last few cleanup stuff
* dress additions
* pants fixing
* skirtfixes
* yet more fixe
* Add flag reminder
* easier to locate comments
* rename files and add new digi greyscales
* jsonery
* gags shortdress
* god ddanit sitsfuc
* colore
* strapless fixe
* conflict fix and adding new stufs
* Better Cableknit
* pentatata
* these go into the pants PR
* add ADDITION to comments
* consistent spacing in comments
* lame useless comments goodbye! goodbye!
* Greyscale file as Defines
* i love snake_case :) (This isnt ironic I do I just forgot it earlier)
* oops ctrl-f doesnt change filenames
* damn you blueshift damn you!!
* fix that pesky runtime
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
* Water vapour electrolysis and hypernoblium electrolysis now respects heat capacity changes. (#69396)
Electrolyzer heat capacity respect.
The electrolyzer did not respect heat capacity changes for the h2o_conversion reaction and the nob_conversion reaction, destroying energy.
This changes that by storing the old heat capacity at the start of the reactions, then getting the new heat capacity at the end of the reaction, then adjusting temperature based on the heat capacity changes.
* Water vapour electrolysis and hypernoblium electrolysis now respects heat capacity changes.
Co-authored-by: Pickle-Coding <58013024+Pickle-Coding@users.noreply.github.com>
* Automatic R&D sync (#69735)
* Automatic R&D sync
* One second instead of a half-second
* Moth changes + more
- Actually use SIGNAL_HANDLER
- Use update_static_data_for_all_viewers instead of only updating static data for the current user
* Batch techweb updates
* Automatic R&D sync
Co-authored-by: scriptis <scriptif@gmail.com>
* Small grammer fix to monkey trip toggleing (#69712)
* Replaces 'not' with 'now' in monkey trip toggling.
* Small grammer fix to monkey trip toggleing
Co-authored-by: itseasytosee <55666666+itseasytosee@users.noreply.github.com>
* Cleans up populate world code (#69752)
* cleans up populate world
* fix debug text
* cleanup
Co-authored-by: tattle <article.disaster@ gmail.com>
* Cleans up populate world code
Co-authored-by: tattle <66640614+dragomagol@users.noreply.github.com>
Co-authored-by: tattle <article.disaster@ gmail.com>
* [NO GBP] Fix an edgecase runtime when SM delams into cascade in under 2 minutes. (#69757)
Feeex
* [NO GBP] Fix an edgecase runtime when SM delams into cascade in under 2 minutes.
Co-authored-by: vincentiusvin <54709710+vincentiusvin@users.noreply.github.com>
* Xenomorph powers require hands and mobility up to use (#69538)
* Xenomorph powers require hands and mobility up to use
Xenomorphs usually don't have hands blocked/are immobile, so this mostly just affects Humans, who can use neurotoxin spit while stunned.
* Neurotoxin checks for muzzle instead of hands blocked
Reverses hands check for Xeno powers, instead Neurotoxin specifically will check for muzzled.
* Xenomorph powers require hands and mobility up to use
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* Adds two modes for BuildMode (#69428)
Adds two modes for BuildMode, with personal icons
Tweak Components Rating - for easier upgrade of machinery.
ProcCall - for fast ProcCall on objects.
* Adds two modes for BuildMode
Co-authored-by: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com>
* the mop can only absorb liquid within 1 tile
* return back tickets ping with config
* Revert "the mop can only absorb liquid within 1 tile"
This reverts commit 2cdd22363349835c6eab10a7f45403e41be27a59.
* mhm
* add init
* some changes
* some mistakes
some mistakes
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
* Cadaver spawner fixes (#69544)
fix: Fixed a runtime preventing nonhuman cadavers from spawning properly.
config: Cadaver spawners will no longer yell at you when morgue_cadaver_other_species_probability is blank.
config: morgue_cadaver_disable_nonhumans will now properly disable nonhuman races! (It was reversed, woops.)
* Cadaver spawner fixes
Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
* Police hats are now hats instead of helmets. (#69643)
* Fixes police hats covering your hair.
Makes police hats a subtype of Warden's hats, so they still are security-level armor, without covering your hair like helmets do.
This was gone unnoticed because the item is very limited in-game.
I also renamed the gravity generator updatepaths because it's been inconsistent with the rest of the updatepaths for a while now.
* renames updatepaths
* Update tools/UpdatePaths/Scripts/69643_police_hat.txt
Co-authored-by: san7890 <the@ san7890.com>
* moves the hat to warden's, removes icon state
Turns out the icon state is shared between both hats, so the only real difference is name and description...
Co-authored-by: san7890 <the@ san7890.com>
* Police hats are now hats instead of helmets.
* Update head.dm
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: san7890 <the@ san7890.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
* Gives the ORM a visual indicator showing which side is the input and which is the output (#69551)
About The Pull Request
Gives the ORM a light on either side showing which is the input and which is the output, blue for input, red for output.
ORM
121212
233123123
Why It's Good For The Game
Useful for if anyone decides to move the ORM.
Changelog
cl Wallem
qol: The ORM now has color-coded lights showing which side is the input and output. Blue for input, red for output.
/cl
* Gives the ORM a visual indicator showing which side is the input and which is the output
Co-authored-by: Wallem <66052067+Wallemations@users.noreply.github.com>
* CTF qol update for admins, map selection and admins can't render CTF unplayable by accident anymore. (#69710)
About The Pull Request
When CTF map unloading was originally created in had an unforeseen consequence of not entirely removing parts of the ongoing CTF round, namely the flags, as a result of this, this system that was originally made as a precursor to map rotation was not really usable. Since this was added various PRs have made this more and less buggy but the recent CTF voting PR has caused unloading CTF rounds to be a one way process without far more involved admin intervention to reverse. As such, I've made the disable CTF buttons admins have access to only disable CTF and not unload the map entirely. I've left the function to unload the map in incase a situation arises where an admin or maintainer really needs to get rid of the CTF map.
Removing this functionality also removes a really clunky but theoretical function of it, being that you could repeatedly unload and reload the CTF map to get one of your choice, since this is not an option anymore this PR also allows admins to pick a CTF map when they start CTF themself.
EDIT: I fixed the bug introduced by the CTF voting PR, CTF maps can now be reloaded after being unloaded, the flag issue is still around so it shouldn't be used without admin supervision however. Also unloading is a debug verb now.
Why It's Good For The Game
Map unloading was super buggy so it shouldn't be easily accessible.
Since admins cannot repeatedly unload and reload CTF maps anymore to get the one they want they can now just pick the one they want from a list which is significantly less dumb.
Changelog
cl
admin: When admins start CTF they can now choose which map is played or choose random as its always been
admin: Admins can no-longer permanently break CTF by unloading the map accidentally
spellcheck: Fixed a typo in the Map Description for CTF Cruiser
fix: CTF can now be reloaded after being unloaded
/cl
* CTF qol update for admins, map selection and admins can't render CTF unplayable by accident anymore.
Co-authored-by: NamelessFairy <40036527+NamelessFairy@users.noreply.github.com>
* fix xenbio bag (#69518)
A little earlier, it was gone to use bags of xenobiology on reproductive extracts, but now, after this change, the possibility is completely returned.
* fix xenbio bag
Co-authored-by: Yaroslav Nurkov <78199449+AnywayFarus@users.noreply.github.com>
* Fixes xenomorphs being able to hold any item (#69626)
* Fixes xenomorphs being able to hold any item
Advanced trait user was moved into the brain, which meant Xenomorphs (who have brains) were now advancedtoolusers, and as such were able to manipulate non-xeno stuff.
* Removes xenomorph literacy
Co-authored-by: Tim <timothymtorres@ gmail.com>
* Removes xeno's strip from their initialize
Co-authored-by: Tim <timothymtorres@ gmail.com>
* Fixes xenomorphs being able to hold any item
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Tim <timothymtorres@ gmail.com>
* Supermatter cascade subsystems fire when it needs to (#69686)
Supermatter cascade by default is offline, and will fire when a supermatter cascade occurs.
* Supermatter cascade subsystems fire when it needs to
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
* Adds an examine hint to explorer gas masks (#69646)
* Gives examine text to unfolded gas masks that folded ones fit in bags.
* Adds an examine hint to explorer gas masks
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Removes 3 exclusive species from magic mirrors (#69613)
* adios exclusives
* don't think i forgot you
* you get to stay
* Removes 3 exclusive species from magic mirrors
Co-authored-by: tralezab <40974010+tralezab@users.noreply.github.com>
* Atmos init speedup, saves 4 seconds (#69697)
* Micro optimizes ssair's turf init, saving 2 seconds
Most of this is making existing operations do more legwork, or cheaper.
I did add cycle checking to ONLY init turf linking, which required
creating a new proc.
Did some horrible horrible things in said proc to save like 0.8 seconds.
I think it was worth it.
* Atmos init speedup, saves 4 seconds
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Refactors/Improves trader NPC with more functionality (#68947)
About The Pull Request
image
This is the result of trader NPCs needing to be improved to meet specifications for a TG codebase downstream; the code is going back upstream to see if the maintainers here would like to have it, someone could use the improved functionality to actually implement the trader somewhere in the codebase rather than having it lay in cold storage.
The PR contains
Some additional documentation for various variables/procs
Implemented a "quantity" variable for selling/buying items in a limited quantity until a restock is triggered
Phrases are moved into list() to allow for more variety by using pick() if needed
Some functionality is moved out of big procs (hardcoded currency generation, isstack() checks) to allow coders to more easily override the calculation process without overriding big parts of necessary code like radial generation/interaction
More UI for the end user to more easily understand what the trader is selling/buying; mainly a dedicated "tell me what you're selling/buying" with colored text and icon overlays indicating out of stock
Why It's Good For The Game
Makes traders overall more useful to program without needing to override massive procs, more functionality is implemented and is more friendly to the end user without needing code diving skills to interact with traders
Changelog
cl ma44
code: Trader NPCs have been given some needed frontend and backend changes
/cl
* Refactors/Improves trader NPC with more functionality
Co-authored-by: ma44 <guyonleagueoflegends@gmail.com>
* [MDB IGNORE] APC controller and Power Monitor/AmpCheck fixes, aka How do I write PR titles (#69146)
About The Pull Request
bgug fix stuff
APC controller UI has its elements section'ed off. The backend has been redone to make the behaviour of the APC controller a bit less janky. The console should be more stable, and all the soul has been removed from the code and the UI.
before this PR stales out from nobody wanting to review my pr, I should probably outline what exactly changed:
APC controller consoles have had their APC code almost entirely reworked. They no longer have to hold a reference to the person using the controller currently, and APCs themselves no longer hold a reference to the controller, instead to the person directly. A lot of code was moved to APC themselves to make it a lot more stable.
APC controller used to call toggle_breaker without passing args, causing a runtime. Fixed in
Fixes the power flow control console not actually being able to toggle breakers #69343
APC controller UI has had the Window.Content tags moved up to the top component, and a lot has been sectioned off to make the UI more sane.
AmpCheck used to look for a wire on it's turf, or as a fallback look for the Area APC. A check to see if the APC has a terminal did so on a weakref, causing a runtime and preventing the program from ever finding a valid APC in it's area, making it show nothing. This has been fixed. On the other hand, the power monitor console did not store the ground wire or APC terminal as a weakref, this has been updated. As a fallback, if there are still no APCs in the powernet, the UI will show a dimmer popup.
There was a "secret" power monitor variation in code so PDAs could not access monitors in hidden places. With the removal of PDAs, this control console is useless.
Why It's Good For The Game
Tiny bit of (much needed) polish on some useful tools in the engineering department.
Changelog
cl
fix: Fixed runtime when using AmpCheck without connecting the console with a wire.
fix: Fixed a few runtimes that could occur when using APC controller consoles.
qol: Sucked soul out of APC controller code and UI.
del: Removed "secret" power monitor console.
/cl
* [MDB IGNORE] APC controller and Power Monitor/AmpCheck fixes, aka How do I write PR titles
* update paths
Co-authored-by: distributivgesetz <distributivgesetz93@gmail.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
* Dimensional Anomaly (#69512)
About The Pull Request
Everyone has been asking: "When will there be an anomaly like the bioscrambler, but for the space station? Please, we need more things which replace objects with different objects from the same typepath."
Well I made it and it looked like ass because non-tiling floor and walls look terrible, so then I made this instead.
Dimensional.mp4
The "dimensional anomaly" shifts matter into a parallel dimension where objects are made out of something else.
Like the Bioscrambler anomaly, it does not expire on its own and only leaves when someone signals it or uses an anomaly remover.
When it spawns it picks a "theme" and converts terrain around it until it covers a 7x7 square, then it teleports somewhere else and picks a new theme.
A lot of these themes are relatively benign like "meat", "fancy carpet", or "gold". Some of them are kind of annoying like "icebox" because it creates floor which slows you down, or "clown" because bananium is intentionally annoying. Some of them are actively dangerous, mostly "uranium" and "plasma".
The main problem this will usually cause for crewmembers is decreasing area security. When it replaces doors it replaces them with ones which don't have any access control, and it will also replace RWalls with normal and much more vulnerable walls which will make breaking and entering significantly easier until someone has taken the time to fix the damage. But also sometimes it will irradiate them, you never know.
The fact that sometimes the changes are benign (or provide uncommon materials) and might be happening in places you don't care about access to might encourage people to push their luck and leave it alone until it starts turning the captain's office into a bamboo room or repainting medbay a fetching shade of flammable purple, which I would consider a success.
Armour.mp4
If you successfully harvest the anomaly core you can place it into the reactive armour to get Reactive Barricade Armour, which shifts your dimension when you take damage and attempts to place some randomised (not terribly durable) objects between you and hopefully your attacker (it really just picks up to four random unoccupied tiles next to you). If you're EMPed then the changes it make to the environment will often be as unpleasant for you as they are for a pursuer, and significantly more likely to harm both of you rather than just provide obstacles.
Other changes:
I split anomalies out into their own dmi file, seems to be all the rage lately.
I moved the anomaly placing code into a datum instead of the event because I wanted to reuse it but if you have a better idea about where I could have put it let me know.
This also fixes a bug where the material spreader component wasn't working when I applied plasma materials to something, the extra whitespace was parsing as another argument for some reason and meant it would runtime.
Supermatter delamination was still pointing to Delimber anomalies instead of Bioscrambler.
* Dimensional Anomaly
* Fixes the upstream merge skew
Co-authored-by: Jacquerel <hnevard@gmail.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* Fixes MODsuits not turning off their modules upon seeing one of their parts being retracted.
* Makes it so all parts need to be deployed to use a module that can't be used while the MODsuit is inactive
* Faxing of unusual objects (#69651)
* Fax machines have a wire panel.
Fax machines can be hacked to allow unusual input, throw their contents on receipt, and be invisible to the network.
Fax machines will accept some additional paper-like items by default.
Fax icons moved to their own file.
* Unpunctuates screentips.
You can send cash now also.
* Removes unnecessary "var".
Adds salami to food list.
* Faxing of unusual objects
Co-authored-by: Jacquerel <hnevard@gmail.com>
* Fixes ghost role / admin events announcing after they failed to spawn the antagonist. Admin spawned blobs will no longer announce immediately. (#69671)
* Fixes ghost role / admin events announcing after they failed to spawn the antagonist.
* Actually, this isn't even needed
* Fixes ghost role / admin events announcing after they failed to spawn the antagonist. Admin spawned blobs will no longer announce immediately.
Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
* Ensures that the shrink ray now has an alien abductor pin, like the alien blaster does (#69701)
easy fix
* Ensures that the shrink ray now has an alien abductor pin, like the alien blaster does
Co-authored-by: Rhials <Datguy33456@gmail.com>