diff --git a/code/modules/admin/player_effects.dm b/code/modules/admin/player_effects.dm index 5dba34f15e..e4c0801167 100644 --- a/code/modules/admin/player_effects.dm +++ b/code/modules/admin/player_effects.dm @@ -281,6 +281,64 @@ qdel(suit) qdel(hood) + if("mob_tf") + var/mob/living/M = target + + if(!istype(M)) + return + + var/list/types = typesof(/mob/living) + var/chosen_beast = tgui_input_list(user, "Which form would you like to take?", "Choose Beast Form", types) + + if(!chosen_beast) + return + + var/mob/living/new_mob = new chosen_beast(get_turf(M)) + new_mob.faction = M.faction + + if(new_mob && isliving(new_mob)) + for(var/obj/belly/B as anything in new_mob.vore_organs) + new_mob.vore_organs -= B + qdel(B) + new_mob.vore_organs = list() + new_mob.name = M.name + new_mob.real_name = M.real_name + for(var/lang in M.languages) + new_mob.languages |= lang + M.copy_vore_prefs_to_mob(new_mob) + new_mob.vore_selected = M.vore_selected + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(ishuman(new_mob)) + var/mob/living/carbon/human/N = new_mob + N.gender = H.gender + N.identifying_gender = H.identifying_gender + else + new_mob.gender = H.gender + else + new_mob.gender = M.gender + if(ishuman(new_mob)) + var/mob/living/carbon/human/N = new_mob + N.identifying_gender = M.gender + + for(var/obj/belly/B as anything in M.vore_organs) + B.loc = new_mob + B.forceMove(new_mob) + B.owner = new_mob + M.vore_organs -= B + new_mob.vore_organs += B + + new_mob.ckey = M.ckey + if(M.ai_holder && new_mob.ai_holder) + var/datum/ai_holder/old_AI = M.ai_holder + old_AI.set_stance(STANCE_SLEEP) + var/datum/ai_holder/new_AI = new_mob.ai_holder + new_AI.hostile = old_AI.hostile + new_AI.retaliate = old_AI.retaliate + M.loc = new_mob + M.forceMove(new_mob) + new_mob.tf_mob_holder = M + ////////MEDICAL////////////// if("appendicitis") @@ -688,3 +746,9 @@ if(target.orbiters) qdel(target.orbiters) //CHOMPEdit End + + if("revert-mob-tf") + var/mob/living/Tar = target + if(!istype(Tar)) + return + Tar.revert_mob_tf() diff --git a/tgui/packages/tgui/interfaces/PlayerEffects/PlayerEffectsTabs/ControlFixes.tsx b/tgui/packages/tgui/interfaces/PlayerEffects/PlayerEffectsTabs/ControlFixes.tsx index 5e0d2f9f5d..6e157da23c 100644 --- a/tgui/packages/tgui/interfaces/PlayerEffects/PlayerEffectsTabs/ControlFixes.tsx +++ b/tgui/packages/tgui/interfaces/PlayerEffects/PlayerEffectsTabs/ControlFixes.tsx @@ -15,6 +15,9 @@ export const ControlFixes = (props) => { + ); }; diff --git a/tgui/packages/tgui/interfaces/PlayerEffects/PlayerEffectsTabs/ControlSmites.tsx b/tgui/packages/tgui/interfaces/PlayerEffects/PlayerEffectsTabs/ControlSmites.tsx index bfd83aa3e2..5b026beb92 100644 --- a/tgui/packages/tgui/interfaces/PlayerEffects/PlayerEffectsTabs/ControlSmites.tsx +++ b/tgui/packages/tgui/interfaces/PlayerEffects/PlayerEffectsTabs/ControlSmites.tsx @@ -63,6 +63,9 @@ export const ControlSmites = (props) => { + ); };