mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-28 02:21:53 +00:00
## About The Pull Request >_"I don't remember buying tickets to Mutants on Ice."_ >-Duke Nukem This PR is (hopefully the final) part of a series of my continuing refactors of the DNA Infuser. This PR represents a "quality pass" which should also iron-out the rest of the most impactful bugs. Granular list of changes: - This PR adds unit tests for the DNA Infuser organs and `/datum/status_effect/organ_set_bonus` as recommended by @AnturK - I noticed that the base `/datum/infuser_entry` was being used in the machine for the Fly and "rejected" infusions, whereas usually we would expect it to be a base type used only as a development template. I corrected this issue and created `/datum/infuser_entry/fly` to be used for that use-case instead. - Added `/mob/proc/can_mutate()` and `/mob/living/carbon/can_mutate()` to replace a few copied lines across several files. The proc is normally used in the context of mutating a Human via their DNA. - I fixed a ton of typos in organ-related code, specifically where "receiver" was typo'd as "reciever". There are far more of those typos, but I limited the scope of my changes to organs. - I noticed a bug in `/datum/species/proc/regenerate_organs` wherein a race condition caused an organ to remove itself before it's done inserting itself. This happens because the Fly organ set bonus runs `regenerate_organs` which calls `Remove` on the organ while `Insert` is still in the call-stack. I added `INVOKE_ASYNC` as a workaround, and also changed the order the signals are emitted to prevent future bugs. This bug primarily only impacted the flyperson species transformation, which was part of the DNA Infuser's flyperson infusion organ set bonus. - In my last refactor PR #72745 I also introduced a bug in `/obj/machinery/dna_infuser/proc/infuse_organ` wherein I forgot to add the usage of `new` when attempting to implant new organs, and this PR fixes the erroneous code. - Fxed a bug which causes the organ set bonus to activate when mixing organs from different sources, which is caused by a developer oversight wherein all `/datum/status_effect/organ_set_bonus` had identical IDs. - Added a cleaner `replacetext`-based way of handling pronouns in `/datum/element/noticable_organ/proc/on_receiver_examine`, using custom macros `%PRONOUN_S` and `%PRONOUN_ES` as advised by @MrMelbert - This PR also fixes #72767 ## Why It's Good For The Game With the changes in this PR the machine will finally work as we expect it to. By adding unit tests we will also be able to ensure that it works as expected from now on. I feel confident saying that the completeness, algorithmic correctness, and code health of the DNA Infuser is much better than it was before. ## Changelog 🆑 A.C.M.O. fix: Fully fixed the DNA Infuser, which will now infuse organs as expected. fix: Fixed flyperson species transformation and organ set bonus, which was throwing a runtime. fix: Fixed many typos in organ-related source code. /🆑 --------- Co-authored-by: Time-Green <timkoster1@hotmail.com>