* Fixes 2 really annoying cytology virus bugs. (#56062)
This PR fixes the generate_sample proc so it properly uses virus_chance to determine when to generate a virus. Now most samples will be virus free as intended.
It also fixes the bug where virus penalty and spaceacillin consumption would be multiplied by the number of cell lines, rather than the number of viruses, as intended.
* Fixes 2 really annoying cytology virus bugs.
Co-authored-by: Krysonism <49783092+Krysonism@users.noreply.github.com>
* Added a standardized json unit test results log and added my vscode test runner to recommendations (#56058)
Link to the test explorer: https://marketplace.visualstudio.com/items?itemName=Donkie.vscode-tgstation-test-adapter
The test explorer adapter lets you compile and run the code in one click of a button, with no messing about with defines necessary
The extension supports reading test results from the unit test logs, but its shitty having to parse logs for that, so this PR also adds support for a somewhat standardized method of logging unit test results to a json file instead.
* Added a standardized json unit test results log and added my vscode test runner to recommendations
Co-authored-by: Donkie <daniel.cf.hultgren@gmail.com>
* Telekinesis can throw non items (vending machines, lockers) only 1 tile far (#56063)
Telekinesis users can now only throw items 10 tiles, everything else can only be thrown 1 tile
* Telekinesis can throw non items (vending machines, lockers) only 1 tile far
Co-authored-by: Gamer025 <33846895+Gamer025@users.noreply.github.com>
* Correctly transfer skillchips when ahealing someone (#56064)
When ahealing someone via the player panel their skillchips weren't transfered correctly.
The actually skillchip object was left in the old brain and eventually hard deleted.
This caused a runtime when ahealing someone a second time (after the harddel).
This then caused the target to actually have 2 brains because of the runtime while ahealing
* Correctly transfer skillchips when ahealing someone
Co-authored-by: Gamer025 <33846895+Gamer025@users.noreply.github.com>
* Tweak the RD's suplexing ability into a skillchip (#55870)
Although this doesn't change the power level of the Research Director,
it's important to rework "job title" checks into traits or something
similar.
Moving job title specific behaviour out of checks by job name and into
traits means there's more flexibility to trigger behaviour. If an admin
feels the station really needs the ability, they can var edit it in, or
spawn the chip.
* Tweak the RD's suplexing ability into a skillchip
Co-authored-by: coiax <yellowbounder@gmail.com>
* Sticky syndicate access (#56032)
Adds sticky access. Sticky access will be readded if removed in the identification console. Currently only used to fix#54429. Also converts some comments in card_ids.dm to DMdoc comments and adds some new ones.
* Sticky syndicate access
Co-authored-by: interestingusernam3 <51925758+interestingusernam3@users.noreply.github.com>
* [READY] Nukes archeology component and icon_plating and environment_type in favor of base_icon_state. Dig behaviour code improvement (#55819)
* aa
* Removes archeology component. Nukes icon_plating and environment_type in favor of base_icon_state
* Actually maybe lets not use a proc for updating asteroid icon state when its dugged up
* Update plating.dm
* [READY] Nukes archeology component and icon_plating and environment_type in favor of base_icon_state. Dig behaviour code improvement
Co-authored-by: Azarak <azarak10@gmail.com>
* Adds Rocket Backblast (#55681)
This PR adds the backblast element, which when attached to a gun, creates giant plumes of fire when said gun is fired. The PM9 rocket launcher that nuke ops can buy kinda sucks and even a direct hit with the standard rockets loaded isn't enough to guarantee a one-hit crit on a direct hit against an armored opponent, which sucks for how much you pay for it. In that vein, I've also buffed the standard rockets a bit, they now do 50 brute up from 30 on a direct hit, and they create flames on their explosion.
Also makes a tweak to /proc/get_turf_in_angle(), since tile coordinates start at 1,1 instead of 0,0 that proc is now clamped to min 1,1 rather than 0,0
* Adds Rocket Backblast
Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com>
* what did he mean by this (#56042)
Potato goofed 7 months ago so here's a fix (Fridges were defaulting to a force of true, which was... jank)
* Fridges don't open through sheer willpower anymore
Co-authored-by: spessbro <51048066+spessbro@users.noreply.github.com>
* throw_at() will not quickstart a throw if the throw was triggered from the same stack as SSthrowing/fire() (#56004)
throw_at will not quickstart a throw if the throw was triggered from the same stack as SSthrowing/fire()
Infinite throwing loops are fine, as long as they don't loop at the stack level.
* throw_at() will not quickstart a throw if the throw was triggered from the same stack as SSthrowing/fire()
Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
* Converts the pictures in the atmos documentation away from my repo and towards tgstation's copy, preventing me from going rouge and replacing them with le funny memes (#56031)
Instead points them towards tgstation's copy, so open source contributionTM is possible.
* Converts the pictures in the atmos documentation away from my repo
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* improves cardboard box and supplypod code (#56043)
Doesn't let force default to TRUE just in case someone tries to open when they're not supposed to.
* removes cardboard box and supplypod shitcode
Co-authored-by: spessbro <51048066+spessbro@users.noreply.github.com>
* Bvak injectors look right (#56045)
Changes the check to >= 20 (the max volume) instead of > 30 which would never be the case
* Bvak injectors look right
Co-authored-by: spessbro <51048066+spessbro@users.noreply.github.com>
* Fix startup double runtimes again (#56047)
Prevents runtimes that occur before /world/New is called from runtiming in /world/Error due to lack of the config being loaded.
* Fix startup double runtimes again
Co-authored-by: Jordan Brown <Cyberboss@users.noreply.github.com>
* Turns squashing mobs into an element (#55725)
Opens up room for extending squashing behavior for future cytology updates.
* Turns squashing mobs into an element
Co-authored-by: Qustinnus <Floydje123@hotmail.com>
* Move psychologist immunity from mind to skillchip (#55813)
Skillchips are neat, and this is the sort of "job-specific skill" that can remain job specific, but still gainable in the shift through in-universe means.
The logic behind the skillchip is that the supermatter is psychically sensitive, hence the hallucinations and headaches from looking at it and projecting the "correct mental aura" will help it calm down. But that is lore following mechanics.
Refactors skillchips to be able to automatically apply more than one trait.
* Move psychologist immunity from mind to skillchip
Co-authored-by: coiax <yellowbounder@gmail.com>
* Favorite cigarette brand is now put in notes (#56038)
If you lose your cigarettes, it's annoying to have to deal with a negative moodlet because the chatlog saying which brand you need expired. This is just for convenience.
* Favorite cigarette brand is now put in notes
Co-authored-by: Coffee <CoffeeDragon16@gmail.com>
* Barrels work with science goggles (#56035)
Barrel have TRANSPARENT flag when open instead of AMOUNT_VISIBLE letting you see the contents with reagent scanners
* Barrels work with science goggles
Co-authored-by: spessbro <51048066+spessbro@users.noreply.github.com>
* Add unit test for spawning simple_animals (#56021)
Simple unit test that allocates all mobs a gold slime could spawn
* Add unit test for spawning simple_animals
Co-authored-by: Gamer025 <33846895+Gamer025@users.noreply.github.com>
* Vend-a-trays can sell anything! (#56018)
Vend-a-trays can now accept any item, not just food and drinks.
* Vend-a-trays can sell anything!
Co-authored-by: Krysonism <49783092+Krysonism@users.noreply.github.com>
* removes some guns and there ammo from cargo goodie
* removed more guns and ammo from goodies
* Removed Mafia Crate
* removed them entirly from skyrat code
* Removed the lines recomended by Azarak
Co-authored-by: MissFox <github@aesir.org.uk>
* Adds logging and admin notifications to certain ID card access changes (#56014)
* Loog
* Adjust modular computer loog
* Update access.dm
* Move ADMIN_VV in string
* To define or not to define, that is the question when logging everything
* More user loog
* Ads loging and admun notifucations too certain ID card access changes
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Fixes searched items not beign able to be built x5 x10 in autolatyhe (#56017)
* fixes searched items not beign able to be built x5 x10 in autolatyhe
Co-authored-by: Tlaltecuhtli <33834933+Tlaltecuhtli@users.noreply.github.com>
* Caps xenobio mimic contents at 50 things (10 of which can be mobs) to prevent lag (#56011)
Fixes#55850.
Why It's Good For The Game
Performance tweak.
Changelog
🆑
fix: Mimics can no longer eat an unlimited amount of stuff and are instead limited to 10 mobs and 50 things overall. This means player mimics are no longer able to cause significant lag by opening and closing themselves.
/🆑
* Caps xenobio mimic contents at 50 things (10 of which can be mobs) to prevent lag
Co-authored-by: interestingusernam3 <51925758+interestingusernam3@users.noreply.github.com>
* Line change to fix monkeys never devolving into humans if they started as a monkey (#56007)
I wondered if this would be a problem when I originally made #55844 since I only tested on humans devolving into monkeys and back, but not monkeys into humans if the monkey spawned as one.
* Line change to fix monkeys never devolving into humans if they started as a monkey
Co-authored-by: necromanceranne <40847847+necromanceranne@users.noreply.github.com>
* Fixes slimes riding monkeys and thus falling off of each other (#55887)
Fixes slimes trying to ride monkeys.
* Fixes slimes riding monkeys and thus falling off of each other
Co-authored-by: Qustinnus <Floydje123@hotmail.com>
* Fix chemical grafts (#56000)
Fixes chemical grafts in botany so their seeds actually gain the reagents they offer.
For those who didn't know, Spaceman's Trumpet is the only plant (for now) that allows you you graft it and get a chemical instead of a trait (Polypyrylium Oligomers). Only this graft doesn't work. It shows up in the plant, but on harvest there is none of that chemical inside of it. Now it works.
* Fix Botany chemical gene grafts
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Fixes AIs being unable to access their own APC interface when power is off (#55977)
When an AI runs out of power, they get a short fluff text story about hacking into their own APC through the powernet or whatever, before having the APC's interface open. The intention is that an AI can re-enable their own breaker after a bit if something flipped it off. However, one of the many checks in TGUI will fail if the AI has no power (specifically, if incapacitated() returns TRUE), making this whole feature not work. In fact, it's probably been broken since TGUI APCs were done. I have fixed it by adding a check in the very same proc to return UI_INTERACTIVE if the UI's source object is the same object referenced in the AIs apc_override variable. Closes#52548
The apc_override variable is now an APC object reference rather than a boolean. It is set to the AI's local APC when the hack flufftext completes, and is null'd when power is restored. This reference is used by the above, so that the AI only gets access to this one APC rather than any APC in general.
AIs now also get a hyperlink in their chatbox, allowing them to open the APC interface should they have closed it. If they have had power restored, the apc_override reference var will be null, and using the hyperlink will simply result in text stating the backdoor to the APC is closed.
If the AI reconnects into a state where it has no power and apc_override is set, it will get a hyperlink to the APC, in case the AI player had been reconnecting when the window would have popped up or otherwise does not have the link for whatever reason.
* Fixes AIs being unable to access their local APC when out of power
Co-authored-by: zxaber <37497534+zxaber@users.noreply.github.com>
* Vending machines use slow throws (#56003)
quickstart acts by ticking the first throw right away, but this can lead to stack overflows if this throw happens to trigger another throw. it should really be moved to a default off argument, as only user initiated throws should use it, but throws that themselves can be triggered by throws (like this) should definitely not use it.
* Vending machines use slow throws
Co-authored-by: Kyle Spier-Swenson <kyleshome@gmail.com>
* Area-based escape condition checking (#55677)
It turns out that checking if a traitor is in custody for their objectives checks if they're on a red plasteel or plastitanium floortile. This is pretty unintuitive, and one of our newer shuttles (the nature emergency shuttle) didn't have these floortiles in their brig. This changes the checking of a traitor's turf to their area.
I've also gone through all of our existing shuttles that have clear brigs (didn't touch things like the hyperfractal and disco inferno) and changed their areas to this new one.
* Area-based escape condition checking
Co-authored-by: dragomagol <66640614+dragomagol@users.noreply.github.com>