mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-12 02:32:10 +00:00
* 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>
48 lines
2.2 KiB
Plaintext
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)
|