From 488301cdaa69e65b47d32ecfbeeb650616b40368 Mon Sep 17 00:00:00 2001 From: AnturK Date: Tue, 21 Dec 2021 10:02:04 +0100 Subject: [PATCH] Golem name fix (#63506) Fixes names of golems from golem shells. This whole manual transfer mess (golems having a special ability to swap into another mob spawner) needs better implementation. --- .../mob_spawn/ghost_roles/golem_roles.dm | 22 +++++++++++-------- code/modules/mob_spawn/mob_spawn.dm | 8 ++++--- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/code/modules/mob_spawn/ghost_roles/golem_roles.dm b/code/modules/mob_spawn/ghost_roles/golem_roles.dm index 335cb026328..8f85972f895 100644 --- a/code/modules/mob_spawn/ghost_roles/golem_roles.dm +++ b/code/modules/mob_spawn/ghost_roles/golem_roles.dm @@ -32,7 +32,18 @@ important_text = "Serve [creator], and assist [creator.p_them()] in completing [creator.p_their()] goals at any cost." owner = creator -/obj/effect/mob_spawn/ghost_role/human/golem/special(mob/living/new_spawn, name) + +/obj/effect/mob_spawn/ghost_role/human/golem/name_mob(mob/living/spawned_mob, forced_name) + if(!forced_name) + var/datum/species/golem/golem_species = mob_species + if(has_owner) + forced_name = "[initial(golem_species.prefix)] Golem ([rand(1,999)])" + else + golem_species = new mob_species + forced_name = golem_species.random_name() + . = ..() + +/obj/effect/mob_spawn/ghost_role/human/golem/special(mob/living/new_spawn, mob/mob_possessor) . = ..() var/datum/species/golem/X = mob_species to_chat(new_spawn, "[initial(X.info_text)]") @@ -51,14 +62,7 @@ var/datum/species/golem/G = H.dna.species G.owner = owner H.set_cloned_appearance() - if(!name) - if(has_owner) - H.fully_replace_character_name(null, "[initial(X.prefix)] Golem ([rand(1,999)])") - else - H.fully_replace_character_name(null, H.dna.species.random_name()) - else - H.fully_replace_character_name(null, name) - if(has_owner) + if(has_owner && new_spawn.mind) new_spawn.mind.set_assigned_role(SSjob.GetJobType(/datum/job/servant_golem)) else new_spawn.mind.set_assigned_role(SSjob.GetJobType(/datum/job/free_golem)) diff --git a/code/modules/mob_spawn/mob_spawn.dm b/code/modules/mob_spawn/mob_spawn.dm index d909430a8da..7824401311b 100644 --- a/code/modules/mob_spawn/mob_spawn.dm +++ b/code/modules/mob_spawn/mob_spawn.dm @@ -168,7 +168,8 @@ /obj/effect/mob_spawn/ghost_role/special(mob/living/spawned_mob, mob/mob_possessor) . = ..() - spawned_mob.ckey = mob_possessor.ckey + if(mob_possessor) + spawned_mob.ckey = mob_possessor.ckey if(show_flavor) var/output_message = "[you_are_text]" if(flavour_text != "") @@ -177,8 +178,9 @@ output_message += "\n[span_userdanger("[important_text]")]" to_chat(spawned_mob, output_message) var/datum/mind/spawned_mind = spawned_mob.mind - spawned_mob.mind.set_assigned_role(SSjob.GetJobType(spawner_job_path)) - spawned_mind.name = spawned_mob.real_name + if(spawned_mind) + spawned_mob.mind.set_assigned_role(SSjob.GetJobType(spawner_job_path)) + spawned_mind.name = spawned_mob.real_name //multiple use mob spawner functionality here- doesn't make sense on corpses /obj/effect/mob_spawn/ghost_role/create(mob/mob_possessor, newname)