From ad4007e3f5554e2eb12a3eec438e1580e0b74416 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Thu, 4 Apr 2024 21:50:40 +0200 Subject: [PATCH] [MIRROR] Aheal no longer turns monkies in to humans (#27160) * Aheal no longer turns monkies in to humans (#82393) ## About The Pull Request Also changes the Make Monkey Admin button to turn you into a monkey with mutations instead of just creating a new being. Closes: https://github.com/tgstation/tgstation/issues/80744 Mabye Closes: https://github.com/tgstation/tgstation/issues/81722 ## Changelog :cl: fix: aheal no longer turns monkies into humans qol: Player panel "make monkey" turns humans into monkeys through mutation instead of making a new mob /:cl: * Aheal no longer turns monkies in to humans --------- Co-authored-by: Bilbo367 <163439532+Bilbo367@users.noreply.github.com> --- code/datums/mutations/_mutations.dm | 1 + code/datums/mutations/body.dm | 1 + code/modules/admin/topic.dm | 7 ++++++- code/modules/mob/living/carbon/human/human.dm | 2 +- 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/code/datums/mutations/_mutations.dm b/code/datums/mutations/_mutations.dm index cc99917c746..a5ddcd6d327 100644 --- a/code/datums/mutations/_mutations.dm +++ b/code/datums/mutations/_mutations.dm @@ -49,6 +49,7 @@ * make sure to enter it both ways (so that A conflicts with B, and B with A) */ var/list/conflicts + var/remove_on_aheal = TRUE /** * can we take chromosomes? diff --git a/code/datums/mutations/body.dm b/code/datums/mutations/body.dm index 035cf64db80..8439a6219dc 100644 --- a/code/datums/mutations/body.dm +++ b/code/datums/mutations/body.dm @@ -206,6 +206,7 @@ text_gain_indication = "You feel unusually monkey-like." text_lose_indication = "You feel like your old self." quality = NEGATIVE + remove_on_aheal = FALSE locked = TRUE //Species specific, keep out of actual gene pool var/datum/species/original_species = /datum/species/human var/original_name diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index ad8aed969af..75aa5f4f3db 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -234,7 +234,12 @@ if(posttransformoutfit && istype(newmob)) newmob.equipOutfit(posttransformoutfit) if("monkey") - M.change_mob_type( /mob/living/carbon/human/species/monkey , null, null, delmob ) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + H.dna.add_mutation(/datum/mutation/human/race, MUT_NORMAL) + H.dna.activate_mutation(/datum/mutation/human/race) + else + M.change_mob_type( /mob/living/carbon/human/species/monkey , null, null, delmob ) if("robot") M.change_mob_type( /mob/living/silicon/robot , null, null, delmob ) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 3822fd8e940..767c09bfa68 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -743,7 +743,7 @@ /mob/living/carbon/human/fully_heal(heal_flags = HEAL_ALL) if(heal_flags & HEAL_NEGATIVE_MUTATIONS) for(var/datum/mutation/human/existing_mutation in dna.mutations) - if(existing_mutation.quality != POSITIVE) + if(existing_mutation.quality != POSITIVE && existing_mutation.remove_on_aheal) dna.remove_mutation(existing_mutation) if(heal_flags & HEAL_TEMP)