From b2e9fe872893fc365789ff0a7a36b6292f29624e Mon Sep 17 00:00:00 2001 From: fludd12 Date: Mon, 11 Jun 2018 01:03:55 -0400 Subject: [PATCH] Fixes and Upgrades Stabilized Gold Extracts (#38394) * Fixes and Upgrades * I Forgot To Sync This Whoops * If You Say So --- .../xenobiology/crossbreeding/_status_effects.dm | 4 +++- .../xenobiology/crossbreeding/stabilized.dm | 15 +++++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm index a4e003fc73d..ca334497a76 100644 --- a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm +++ b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm @@ -762,9 +762,11 @@ datum/status_effect/stabilized/blue/on_remove() /datum/status_effect/stabilized/gold/tick() var/obj/item/slimecross/stabilized/gold/linked = linked_extract - if(!familiar) + if(QDELETED(familiar)) familiar = new linked.mob_type(get_turf(owner.loc)) + familiar.name = linked.mob_name familiar.del_on_death = TRUE + familiar.copy_known_languages_from(owner, FALSE) if(linked.saved_mind) linked.saved_mind.transfer_to(familiar) familiar.ckey = linked.saved_mind.key diff --git a/code/modules/research/xenobiology/crossbreeding/stabilized.dm b/code/modules/research/xenobiology/crossbreeding/stabilized.dm index 57e38542d69..fe1b498667a 100644 --- a/code/modules/research/xenobiology/crossbreeding/stabilized.dm +++ b/code/modules/research/xenobiology/crossbreeding/stabilized.dm @@ -98,6 +98,7 @@ Stabilized extracts: colour = "gold" var/mob_type var/datum/mind/saved_mind + var/mob_name = "Familiar" /obj/item/slimecross/stabilized/gold/proc/generate_mobtype() var/static/list/mob_spawn_pets = list() @@ -114,20 +115,30 @@ Stabilized extracts: generate_mobtype() /obj/item/slimecross/stabilized/gold/attack_self(mob/user) - var/choice = input(user, "Which do you want to reset?", "Familiar Adjustment") as null|anything in list("Familiar Species", "Familiar Sentience") + var/choice = input(user, "Which do you want to reset?", "Familiar Adjustment") as null|anything in list("Familiar Location", "Familiar Species", "Familiar Sentience", "Familiar Name") if(!user.canUseTopic(src, BE_CLOSE)) return if(isliving(user)) var/mob/living/L = user if(L.has_status_effect(/datum/status_effect/stabilized/gold)) L.remove_status_effect(/datum/status_effect/stabilized/gold) - START_PROCESSING(SSobj, src) + if(choice == "Familiar Location") + to_chat(user, "You prod [src], and it shudders slightly.") + START_PROCESSING(SSobj, src) if(choice == "Familiar Species") to_chat(user, "You squeeze [src], and a shape seems to shift around inside.") generate_mobtype() + START_PROCESSING(SSobj, src) if(choice == "Familiar Sentience") to_chat(user, "You poke [src], and it lets out a glowing pulse.") saved_mind = null + START_PROCESSING(SSobj, src) + if(choice == "Familiar Name") + var/newname = copytext(sanitize(input(user, "Would you like to change the name of [mob_name]", "Name change", mob_name) as null|text),1,MAX_NAME_LEN) + if(newname) + mob_name = newname + to_chat(user, "You speak softly into [src], and it shakes slightly in response.") + START_PROCESSING(SSobj, src) /obj/item/slimecross/stabilized/oil colour = "oil"