* Changing species now maintains Brain traumas, Cybernetic implants, Liver traits, organ damage, and Heretic Living Heart (#70530)
About The Pull Request
Implements additional code in before_organ_replacement in additional places, to better maintain cohesion when species changes take place.
Brain traumas will now carry over on species change
Having synthetic / cybernetic organs will now carry over on species change
Liver job traits will also carry over on species change
Organ damage will, in most cases, carry over on species change (only if the new organ is identical to the old)
The heretic's Living Heart will attempt to carry over to species change, if it's valid
Some species will still not, as it will attempt to give heart -> liver or something and be invalid
Heretic Living Heart is now a cooldown action. Still not really content with the current state of it, it could use some improvements.
Fixes#42308Fixes#35539Fixes#69574
Why It's Good For The Game
Removes a lot of exploits involving using forced species change to get rid of stuff like quirks / permanent brain traumas and similar.
* Changing species now maintains Brain traumas, Cybernetic implants, Liver traits, organ damage, and Heretic Living Heart
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Fixes Some Incredulously Fucked Up Recycler Behavior (#70638)
* test one
Hey there!
Did you know that if you toss someone into a recycled emagger, that we delete _all_ of that mob's contents? You probably didn't because this shit is broken broken. Like, ow.
That's because we manually moved an item to nullspace, which caused a _slew_ of odd behavior in the Destroy chain for `obj/item` since it moves it to nullspace at a very specific point in time and makes all of it's assumptions on when you move the thing to nullspace. If it's in nullspace before you call qdel, you would shit out the ass with hanging references stuck on the mob (like `w_uniform` pointing to something in nullspace, like the image above).
All fixed now, though.
* I FUCKING LOVE UNIT TESTS
THIS SHIT WILL NEVER BREAK AGAIN!!!
* i blanked
my guy hasn't moved for twenty minutes
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* wrong documentation
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Fixes Some Incredulously Fucked Up Recycler Behavior
Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Mothblocks <35135081+Mothblocks@ users.noreply.github.com>
* Cleans up the fallout from plane cube (#70235)
* Cleans up the fallout from plane cube
Alright.
Makes cleaning bubbles respect planes
Adds support for updating overlays on move, fixing an issue with pointing at items
Adds better error messages for failing to provide args for mutable_appearance()
Fixes a bug where string overlays were not respecting insertion order
* Adds documentation for offset spokesman and offset_const
* Better stack trace
* Removes some redundant uses of cached MAs
At this scale, attempting to cache MAs like this has 0 impact on anything
And just makes things more messy then they need to be
* ensures fullscreen objects START offset, so things are always proper
* ensures chatmessages always have the right offset
* fixes compile
* whoops, the above lighting plane should actually be ABOVE the lighting plane
* fixes compile, also cleans up the fire overlay a tad
* Adds a unit test for plane masters that are shrunk by multiz being double shrunk
This is slightly hacky because of how I'm handing the plane master
group, but it's not THAT bad, and gives me some real good coverage
* Properly targets the seethrough plane at the game world plate. This fixes unit tests, and also just makes more sense
* whoops
* oh
* adds datum support for allocate(), cleans up a harddel from testing
* Makes camera chunks index at 1, and also makes them support non powers of two sizes, since that was unneeded
* fixes runtime in allocate
* Cleans up the fallout from plane cube
* liquid tweaks
* oop
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
* Adds clearer modularity support to the inhands unit test. (#70440)
cl ShizCalev
server: Added clarified downstream modularity support for the inhands unit test.
/cl
Sorry to our downstreams for not being clear about how to add additional locations for the test.
You can now just set a var with the path (example provided) and add make sure you also add the path to your deploy.sh.
If you need additional locations ontop of that, just add another line with generate_possible_icon_states_list("your/inhands/folder/path"), and make sure that path is also in deploy.sh
* Adds clearer modularity support to the inhands unit test.
Co-authored-by: ShizCalev <ShizCalev@users.noreply.github.com>
* Update inhands.dm
* ci fix
* ew
* wew
* ew
* wew
* wew
* some hats
* rings and donator clothing
* more guns, pillows, devices
* crush hammer
* Fixing the inhands for the fake announcement device
* traitor_announcer
* Just a handful more fixes, for now.
* lost track of what I changed
* more
* weh
* Okay, now will you pass?
* Update code/modules/projectiles/guns/ballistic/bow.dm
Co-authored-by: tastyfish <crazychris32@gmail.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
* Adds unit test to check for spritesheet issues (#70351)
* Adds a new spritesheet unit test to catch edge-cases that caused problems in the past.
* Adds unit test to check for spritesheet issues
Co-authored-by: AnturK <AnturK@users.noreply.github.com>
* Updates the Reagent Name unit test to also ensure searching by reagent name returns the correct reagent (#70223)
* Updates the Reagent Name unit test to also ensure searching by reagent name returns the correct reagent
Co-authored-by: pizzie11 <arandom11111@gmail.com>
* Unit tests powernets to make sure the whole station is connected. (#70090)
* Unit tests powernets to make sure the whole station is connected.
* fixes cable tests for blueshift and raptor
* single cable misplacement
* hard map reset
* hec
* tramstation armory stray cable
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: Paxilmaniac <paxilmaniac@gmail.com>
Co-authored-by: Tastyfish <crazychris32@gmail.com>
* Removes network cards and printers from tablets
* merge tablet_presets
* printer.dm should have been deleted, missed change
* update contractor tablet
Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
* Gets rid of an annoying sporadic CI failure on closets by actually properly checking if they're qdeleted or not, no matter their typepath (#70116)
* Gets rid of an annoying sporadic CI failure on closets by actually properly checking if they're qdeleted or not, no matter their typepath
Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
* SECURITY RESPRITE - DARE.
* [MDB IGNORE][THIS SHOULD BE PR'D TO AN ALREADY OPEN MIRROR] Security Resprite - conflict fixes and modular changes (#16367)
* No Head?
* comemt clena
* boot stuff mostly
* Im done touching this file it makes me sad
* I hate overrides :(
* Kill off the now obsolete vest
* How long has this not even worked for? /mob/ linked in Icon? Why?
* low-key just committed so the PR could re-run checks
* Fixes Blueshift not compiling!
Co-authored-by: axietheaxolotl <86872535+axietheaxolotl@users.noreply.github.com>
Co-authored-by: OrionTheFox <76465278+OrionTheFox@users.noreply.github.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* Completely refactors hallucinations, and also adds a few
* delete 5 old hallucination types that should have been removed
* Fixed old leftover tips conflicts
* Fixes all the leftover conflicts and otherwise broken code
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: tastyfish <crazychris32@gmail.com>
Co-authored-by: GoldenAlpharex <jerego1234@hotmail.com>
* wip
* Revert "Auxiliary commit to revert individual files from 8264953fcf103b17ab62af0084c7c4da49e01a67"
This reverts commit 450a612c00535c6fd3f0cc847fb00c54c2faa59a.
* Update humanoid.dm
* Update mammal.dm
* Apply suggestions!
* Resolve feedback at long last.
* Fix screenies, but uh, actually on the right branch!
* Unit tests say signal gets the correct list passed with it (#69854)
* Unit tests say signal gets the correct list passed with it
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
* Fixes a closet harddel (#69889)
* Fixes a closet harddel
PopulateContents is called in init which means that the closet is being
qdelled but it's contents are not being properly removed when the
prob(1) is called and it returns the qdel hint. This returns the qdel
hint BEFORE parents init is called to stop this from happening
* okay im just stupid
* moves it
* Update code/modules/unit_tests/closets.dm
Co-authored-by: ShizCalev <ShizCalev@ users.noreply.github.com>
* Update code/modules/unit_tests/closets.dm
Co-authored-by: ShizCalev <ShizCalev@ users.noreply.github.com>
* Fixes a closet harddel
Co-authored-by: Seth Scherer <supernovaa41@gmx.com>
Co-authored-by: ShizCalev <ShizCalev@ 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>
* Micro-optimize GetIdFromArguments to be 48% faster, gaining 0.48s of init time on local (likely more in prod) (#69659)
About The Pull Request
Avoids stringifying key unless its necessary. This was done redundantly twice, but I locked it to just the isnum path, as REF will always return a string, and the other path passes istext.
Use sortTim directly instead of sort_list. sort_list is just sortTim but it copies the list, so it's just wasted cost.
I still would like the bespoke element key option, as that's the only way to drastically cut down costs on things like item descriptions and decals, but this is good for the general use case, and makes it marginally less pressing.
I also want to test if we'd be better off inserting into the list in sorted order rather than sorting it all in the end, but I suspect not.
* Micro-optimize GetIdFromArguments to be 48% faster, gaining 0.48s of init time on local (likely more in prod)
Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
* Fixes storage mass transfer being generally broken, adds mass transferring onto griddles (#69084)
* - Fixes storage mass transfer
- Brings some sanity to storage procs
- Implements a griddle feature that never was
* Uncomment this
* Right-click attack fix
* Scoop fix
* Smartfridges use silent
* Restores some lost checks
* Fixes storage implants
* Fixes storage mass transfer being generally broken, adds mass transferring onto griddles
* update modular
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>
* Unit tests range suck (#69352)
* Unit tests range suck
Ok so we currently rely on some undefined behavior in energy_ball code
Namely, the range() family will return turfs in least/greatest get_dist
This is VERY useful for optimizing the tesla, but it's also undefined,
and lummy could change it any day now.
So let's at least unit test it so if it breaks we can remove it
* Unit tests range suck
Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com>
* Refactors operating tables to be event driven + QoL + Unit Test (#69015)
* Event driven table
* Operating computer fix + loosening of check
* Unit testing
* IT NEEDS TO BE FORCE MOVE YOU GOTTA CLIMB TABLES AAAAH
* Migrated patient to carbon instead of human
Has no real bearing on the experiments tbh
* DNAs can be null apparently
* Simplify replacement code
* Move comments
* Refactors operating tables to be event driven + QoL + Unit Test
* Refactors operating tables to be event driven + QoL + Unit Test
Co-authored-by: vincentiusvin <54709710+vincentiusvin@users.noreply.github.com>
Co-authored-by: Tom <8881105+tf-4@users.noreply.github.com>