Files
Bubberstation/code/modules/unit_tests/ling_decap.dm
MrMelbert 7c2cb68a35 Changelings can now speak through their decoy brain if placed in an MMI (#78342)
## About The Pull Request

- If a changeling's decoy brain is placed in an MMI, they will now be
prompted to speak through it.
- They can speak through the decoy even if incapacitated or dead (or
fake-dead).


https://github.com/tgstation/tgstation/assets/51863163/804bd48a-c4b8-4feb-b021-019ea70e4b8e

## Why It's Good For The Game

The oft-controversial ling MMI test has been brought up time and time
again so I figure I throw my cards in for a solution.

We want as few ways as possible for people to hard and fast discover
whether someone is an antag, especially changling which is supposed to
revel in paranoia. This soft-patches out a big way, the MMI test, in
which you place a ling's brain in an MMI to determine if it's vestigial
and therefore, a ling.

Now the ling player can provide some benefit of the doubt by speaking
through the brain as normal, appearing active while actually in their
body still.

## Changelog

🆑 Melbert
add: Changelings can now speak through their decoy brain if it is placed
in an MMI, to maintain the illusion they are actually dead and have been
debrained.
/🆑
2023-09-24 07:17:23 +00:00

46 lines
1.9 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.")
TEST_ASSERT_NULL(noggin.brainmob.mind, "Changeling's mind was moved to their head after decapitation, but it should have remained in their body.")
var/obj/item/organ/internal/brain/oldbrain = noggin.brain
noggin.drop_organs()
TEST_ASSERT_NULL(noggin.brain, "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()
TEST_ASSERT_EQUAL(noggin.brainmob.mind, my_guys_mind, "Dummy's mind was not moved to their head after decapitation.")
var/obj/item/organ/internal/brain/oldbrain = noggin.brain
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)