* Del The World: Unit testing for hard deletes (#59612)
Co-authored-by: SteelSlayer <42044220+SteelSlayer@ users.noreply.github.com>
* Del The World: Unit testing for hard deletes
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: SteelSlayer <42044220+SteelSlayer@ users.noreply.github.com>
* Makes turfs persist their signals, uses this to optimize connect_loc (#59608)
* Makes turfs persist signals
* Splits connect_loc up into two elements, one for stuff that wishes to connect on behalf of something, and one for stuff that just wants to connect normally. Connecting on behalf of someone has a significant amount of overhead, so let's do this to keep things clear
* Converts all uses of connect_loc over to the new patterns
* Adds some comments, actually makes turfs persist signals
* There's no need to detach connect loc anymore, since all it does is unregister signals. Unregisters a signal from formorly decal'd turfs, and makes the changeturf signal persistance stuff actually work
* bro fuck documentation
* Changes from a var to a proc, prevents admemems and idiots
* Extra detail on why we do the copy post qdel
* Makes turfs persist their signals, uses this to optimize connect_loc
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Adds a unit test to make sure the right amount of colors are supplied to GAGS configurations
* Mirror!
Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
Co-authored-by: Funce <funce.973@gmail.com>
* Adds a unit test for icon states on GAGS items and fixes some inhand sprites (#59330)
This adds a unit test which goes through all items and makes sure all the icon states needed are in the greyscale configurations, if it has one.
* Adds a unit test for icon states on GAGS items and fixes some inhand sprites
Co-authored-by: Emmett Gaines <ninjanomnom@gmail.com>
* I hate TGUI even if its better than what we had before
* this is why linters exist
* you need to be a Head or the Warden to get items
* does this please you linter?
* foundation
* basic interactions
* yea I can spell okay?
* linters please leave me alone
* begone debug code
* if you are dead, no interacting
* linters leave me alone
* linters are stealing my soul
* forgot to do this
* sound framework, probably wont work though
* max length, and interaction cooldowns
* message can now be a list and minor code improve
* I am a slave and linters are my master
* fix improper static reference
* add json loading/saving functionality
* default for message is now a list
* jsonize def interactions; implement requirements
* bad
* bug fix; CtrlShiftClick to interact
* minor qol fix
* fix CtrlShiftClick and remove debug code
* haha docker has security measures
* this was painful
* why are you in this branch
* begone
* bruh
* begone
Co-authored-by: Matthew <matthew@tfaluc.com>
Co-authored-by: Matthew J <GoldenKeyboard@users.noreply.github.com>
* use SIGNAL_HANDLER REEEEEE (#59242)
makes as many procs as i can find use the SIGNAL_HANDLER define which i assumed they all already did
* USE SIGNAL_HANDLER REEEEEE
Co-authored-by: Kylerace <kylerlumpkin1@gmail.com>
* 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>