* Fix invisible powder breaking color blending (#59188)
Fixes a bug where egg glands (eggs with a random reagent) would runtime if they combined with invisible powder.
Invisible powder was setting their color to null, which broke everything. This doesn't change any behavior as invisible powder hardly works anyway.
* Fix invisible powder breaking color blending, fixing a spurrious CI failure
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
* Fixes some more holes in the ref tracker (#58972)
* Fixes some more holes in the ref tracker
The reference tracker was failing to check null keyed assoc list entries, along with being unable to check both
lists in a list(list() = list()) pair
This resolves that, and adds some new logic to the unit test to check for this sort of thing
* Seperates the ref tracking unit test into 6 subtasks as requested
* Fixes some more holes in the ref tracker
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Fixes footprint stacking (#58918)
* Fixes footprint stacking, replace_decal needed to return parent, and just, didn't. I'm not sure where the fuck
this came from, or even how to test for it, but here you are
* Adds a unit test to prevent regressions on this error in future
* Uses TEST_ASSERT_EQUAL instead of TEST_ASSERT
Thank you moth man
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Updates a comment to more accurately describe my pain
* maybe fixes it?
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Fixes footprint stacking
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Fix Wizard Loadouts from the Wizard Spellbook crashing the server. (#58939)
* Fix Wizard Loadouts from the Wizard Spellbook crashing the server.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* (code bounty) refactors all uses of Crossed() and Uncrossed() into signals sent to loc, tracked by connect_loc
* WHEW THAT WAS EASY
* Update ammo.dm
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
Co-authored-by: Gandalf <jzo123@hotmail.com>
Fixes all simple mobs being able to strip, as well as being able to strip when your hands are blocked (e.g. cuffed).
Fixes#58260.
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
* Allows the connect_loc element to have a listener different from the tracked object (#58276)
* Allows the connect_loc element to have a listener different from the tracked object
Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
* Xenomorphs can now strip humans again (#58007)
* Xenomorphs can now strip humans again, create granular tgui state compositors
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
* Ref Tracking: Revengance (#57728)
* Ref Tracking: Revengance
Fixes reference tracking ignoring self references due to a poorly thought out tick checking system.
Fixes reference tracking ignoring the contents of assoc lists
Makes the reference tracking printouts actually describe what list the ref is in, rather then just saying "list"
Adds REFERENCE_TRACKING_DEBUG, a define which toggles tracking info for the ref tracking procs, which allows for
oversight on how the proc is working
Allows for direct calls of qdel_and_find_ref_if_fail(), makes it use ref rather then REF(), fixing it breaking
for mobs. (Ditto for the qdel hint which does the same thing)
Moves REAGENTS_TESTING out of the reftracking define block
Makes unit tests define REFERENCE_TRACKING, REFERENCE_TRACKING_DEBUG, and FIND_REF_NO_CHECK_TICK
Adds a unit test that sanity checks the reference finder proc
* Ref Tracking: Revengance
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Departmental officers are now put together, rather than separate, if possible (#57685)
Security officers will now be paired up together in the same department, across departments. This means that, instead of 4 officers being split across 4 departments, there'll now be 2 groups of 2.
Late-join officers will be put into any department with only 1 officer. If none exist, the least populous department will be chosen, with their preference having priority.
Updates the maps to have more spawns for departmental officers. Delta previously had none, and now has some. Fixed a bug where MetaStation's security departmental officer was a supply one instead.
Removes the "random" departmental preference. All security officers are now given a department. The "none" preference still exists, but just to show that you don't care which department you're put into.
Updates the config to comment out SEC_START_BRIG. This is what the configuration was already on live servers.
This is something that should likely be test merged, but it mucks with savefiles. Luckily, the only damage it does is changing random departments to none, so if a TM is reverted, only that will have to be changed.
* Departmental officers are now put together, rather than separate, if possible
* Update preferences.dm
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
* Makes gas actually dissipate (#57634)
* Raises the quantize threshold from 1E-7 to 1E-4.
This makes gas dissipate as expected, and should help with the amount of useless gas floating around the station
at highpop
Adds a garbage_collect() call to the portion of pipeline code where all gasmixes are in one place, this should
clean things up properly.
Changes BREATH_VOLUME from 2 to 1.99. This is imperative
Documents a FUCKING HELLBUG in quantize/breathcode that can lead to breaths just not working sometimes. I'm not
sure how to fix this totally, so I'll document it and pray.
See <https://www.desmos.com/calculator/5icdlnktus>
Adds a unit test to check for this sort of failure.
Addendum for people tweaking this value in the future.
Because o2 tank release values/human o2 requirements are very strictly set to the same pressure, small errors
can cause breakage
This comes from QUANTIZE being used in /datum/gas_mixture.remove(), forming a slight sawtooth pattern of the
added/removed gas, centered on the actual pressure
Changing BREATH_VOLUME can set us on the lower half of this sawtooth, making humans unable to breath at standard
pressure.
There's no good way I can come up with to hardcode a fix for this. So if you're going to change this variable
graph the functions that describe how it is used/how it interacts with breath code, and pick something on the
upper half of the sawtooth
NOTE: I've made this change with a focus on o2 requirements. Changing this will effect other settings, but most
all of them can be ignored, as none will notice.
* Thank you moth man
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Docs the purpose of the breath unit test, and better explains partial pressure
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Makes gas actually dissipate
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Fix 2.4 damage test bug, with proof (#57560)
I tracked down every source of damage, and just ran the test 100 times until it failed.
It was shrapnel.
I made the victim pierce immune, meaning they'll never take embeds.
* Fix 2.4 damage test bug, with proof
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
* Put unit tests in a box, fixes sporradic gun test failure (#57408)
* Initial commit
* Fix removing old objects
* Remove define
* TGM
* Put unit tests in a box, fixes sporradic gun test failure
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
* Fixes runtimes from firing projectiles, adds unit test for firing guns (#57345)
* Fixes runtimes from firing projectiles, adds unit test for firing guns
Co-authored-by: Ryll Ryll <3589655+Ryll-Ryll@users.noreply.github.com>
* Adds unit test for spawned food edibility (#57232)
* Adds unit test for spawned food having reagents
- Adds stack trace for biting food failing due to a lack of reagents
- Adds checks for seed var being set under food/grown's initialize() in grown.dm
- Fixes issue with gondola meat code duplicated for penguin meat slabs resulting in a runtime and being unable to slice penguin meat
- Adds seeds for bombananas
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Adds unit test for spawned food edibility
Co-authored-by: cacogen <25089914+cacogen@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Crafting menu tells you which colour of crayon is needed (#56950)
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Crafting menu tells you which colour of crayon is needed
Co-authored-by: cacogen <25089914+cacogen@users.noreply.github.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Syringe toggle has been replaced with left-click to inject, right-click to draw. You can also now change transfer amount. (#56865)
* Syringe toggle has been replaced with left-click to inject, right-click to draw. You can also now change transfer amount.
Co-authored-by: Mothblocks <35135081+Jared-Fogle@users.noreply.github.com>
* Refactors sharpness to use a bitfield (#56817)
Refactors sharpness to use bitfield instead of bitflags in case someone wants to add more types of sharp things, or unique behaviour with them
* Refactors sharpness to use a bitfield
* Update bullets.dm
Co-authored-by: Sparkezel <53384660+Sparkezel@users.noreply.github.com>
Co-authored-by: Gandalf2k15 <jzo123@hotmail.com>
* repaths plasteel tiles to iron
* Update robot_modules.dm
* a
* fuck me
Co-authored-by: Fikou <piotrbryla@onet.pl>
Co-authored-by: Gandalf2k15 <jzo123@hotmail.com>
* Dynamic 2021 (#56221)
About The Pull Request
Dynamic 2021, among much other things, splits the threat level into two separate budgets, one for round start and one for midround/latejoin. You can read the design doc, plus methodology and charts here: https://hackmd.io/@ tgstation/S1C4dYJkO.
To server owners: this is incompatible with current dynamic.json configurations. This is not just because some fields have different values now, but because the older values are not balanced towards this system.
Inidividual list of changes (as I remember them):
Threat level is now split into two separate budgets, one for round start and one for midround/latejoin.
In TESTING, you can now run dynamic simulations to see the roundstart picks.
antag_cap is now based on an equation rather than a fixed list of antags per indice--the old system is not scalable. You can now pass it either a number for a fixed constant, or a list with "denominator" and an optional "offset" to fit the equation ceil(x / denominator) + offset, with x being population.
Midround/latejoin timers are now vars on /datum/game_mode/dynamic itself, and thus can be configured by head admins per server.
Removes some older, as far as I can tell completely unused admin tools relating to dynamic.
autotraitor_cooldown is now properly respected from config, and is based on an exact time rather than on ticks (450 used to be 15 minutes, now it's just 15 MINUTES).
The rulesets dynamic chooses are now in a dynamic.json file in round logs. Relies on tgstation/tgstation13.org#64 to be public.
Adds more logging to the autotraitor ruleset for admins.
Midround/latejoin chance modifiers are now configurable.
Labelled "Do Not Merge", as the design doc outlines the specific playtesting schedule I would like to perform.
Note to self: Remove the custom MOTD before merge.
Why It's Good For The Game
(Copied from design doc)
Dynamic currently dumps as much threat as it can into round start threats. This means that rounds at ~50 threat can have an absurd amount of antagonists round start, while leaving very little threat for midround/latejoin antagonists. What inevitably happens is just one of those picked decides to murderbone, leading to the inevitable 20 minute shuttle call. Furthermore, once those antagonists are dead, Dynamic doesn’t have any threat left to spend on new antagonists that keep the round flowing, promoting the mentality of “antags dead, I’m bored, let’s leave”.
The proposed solution of Dynamic 2021 is to split threat level into two separate budgets, one for round start and one for midround/latejoin. This split, like threat level, will also be done on a lorentz curve–meaning that while most rounds will have them evenly split, there is still the possibility of chaotic high antagonist round start rounds, or the possibility of a midround onslaught.
* Dynamic 2021
Co-authored-by: Mothblocks <35135081+Jared-Fogle@users.noreply.github.com>
* Frame stacking fix and unit test addition. (#56287)
* Reverts #56205
* Allow things without density to bypass checks
* The rest of the owl
* The rest of the owl
* Doc and tweak
* More feex
* RCD machine frame unit test
* I suck
* AAAAA
* Bad at unit tests
* Revert unit tests (for including in another PR)
* Fix windoor_assembly return logic
* Comment /mob/living/proc/PushAM logic
* Windoor assembley logic tweak
* Fix frame stacking
* Unit test
* Better wording from macros?
* Frame stacking fix and unit test addition.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* Attempts to fix addictions being utterly broken and almost impossible to obtain. (#56302)
* Attempts to fix addictions being utterly broken and almost impossible to obtain.
Co-authored-by: Timberpoes <silent_insomnia_pp@hotmail.co.uk>
* 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>
* 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>
* The Great Radio Rework: NTNET Part 1 of many.
* Update airlock.dm
Co-authored-by: WarlockD <warlockd@gmail.com>
Co-authored-by: Gandalf2k15 <jzo123@hotmail.com>
* Replaces US Indigenous People's Day with International Indigenous People's Day (#55458)
Title. This modifies a unit test that tested the holiday I'm removing to test mother's day instead, as International Indigenous People's Day isn't an nth week holiday.
* Replaces US Indigenous People's Day with International Indigenous People's Day
Co-authored-by: interestingusernam3 <51925758+interestingusernam3@users.noreply.github.com>
* Fix Hanukkah (again) and refactor Moth Week and Beer Day (#55532)
* Fix Hanukkah (again) and refactor Moth Week and Beer Day
* Remove unnecessary changes
* Fix Hanukkah (again) and refactor Moth Week and Beer Day
Co-authored-by: Jack LeCroy <3073035+jacklecroy@users.noreply.github.com>