Files
Bubberstation/code/modules/unit_tests/ling_decap.dm
SkyratBot ec41354ea1 [MIRROR] Fixes assorted head harddels, removes specific organ vars in head [MDB IGNORE] (#26133)
* Fixes assorted head harddels, removes specific organ vars in head (#80950)

Fixes #80926, fixes #80372

The tongue, eyes, ears and brain vars were also being updated and
cleared elsewhere, runtiming whenever a regular head got dismembered and
then emptied, which would eventually cause a harddel due to improper
clean-up

I've fixed the errant proc and just removed those vars because I don't
like having duplicate references for no reason (they should always
already be in contents)

Not player facing

* Fixes assorted head harddels, removes specific organ vars in head

---------

Co-authored-by: Time-Green <7501474+Time-Green@users.noreply.github.com>
2024-01-16 21:54:33 -05:00

48 lines
2.2 KiB
Plaintext

/// Test lings don't die when decapitated.
/datum/unit_test/ling_decap
/datum/unit_test/ling_decap/Run()
var/mob/living/carbon/human/ling = allocate(/mob/living/carbon/human/consistent)
ling.mind_initialize()
ling.mind.add_antag_datum(/datum/antagonist/changeling)
var/obj/item/bodypart/head/noggin = ling.get_bodypart(BODY_ZONE_HEAD)
noggin.dismember()
TEST_ASSERT_NULL(ling.get_bodypart(BODY_ZONE_HEAD), "Changeling failed to be decapitated.")
var/obj/item/organ/internal/brain/brain = locate(/obj/item/organ/internal/brain) in noggin
TEST_ASSERT_NULL(brain.brainmob.mind, "Changeling's mind was moved to their brain after decapitation, but it should have remained in their body.")
var/obj/item/organ/internal/brain/oldbrain = locate(/obj/item/organ/internal/brain) in noggin
noggin.drop_organs()
TEST_ASSERT_NULL(locate(/obj/item/organ/internal/brain) in noggin, "Changeling's head failed to drop its brain.")
TEST_ASSERT_NULL(oldbrain.brainmob.mind, "Changeling's mind was moved to their brain after decapitation and organ dropping, but it should have remained in their body.")
TEST_ASSERT_EQUAL(ling.stat, CONSCIOUS, "Changeling was not conscious after losing their head.")
// Cleanup
qdel(noggin)
for(var/obj/item/organ/leftover in ling.loc)
qdel(leftover)
/// Tests people get decapitated properly.
/datum/unit_test/normal_decap
/datum/unit_test/normal_decap/Run()
var/mob/living/carbon/human/normal_guy = allocate(/mob/living/carbon/human/consistent)
normal_guy.mind_initialize()
var/my_guys_mind = normal_guy.mind
var/obj/item/bodypart/head/noggin = normal_guy.get_bodypart(BODY_ZONE_HEAD)
noggin.dismember()
var/obj/item/organ/internal/brain/brain = locate(/obj/item/organ/internal/brain) in noggin
TEST_ASSERT_EQUAL(brain.brainmob.mind, my_guys_mind, "Dummy's mind was not moved to their brain after decapitation.")
var/obj/item/organ/internal/brain/oldbrain = locate(/obj/item/organ/internal/brain) in noggin
noggin.drop_organs()
TEST_ASSERT_EQUAL(oldbrain.brainmob.mind, my_guys_mind, "Dummy's mind was not moved to their brain after being removed from their head.")
// Cleanup
qdel(noggin)
for(var/obj/item/organ/leftover in normal_guy.loc)
qdel(leftover)