diff --git a/code/datums/actions/observer_action.dm b/code/datums/actions/observer_action.dm index 192390dd453d8..1caa5ef8e9ead 100644 --- a/code/datums/actions/observer_action.dm +++ b/code/datums/actions/observer_action.dm @@ -63,7 +63,9 @@ if(new_mob.stat == DEAD) to_chat(owner, span_warning("You cannot join if the mob is dead.")) return FALSE - + switch(tgui_alert(owner, "Are you sure you want to take " + new_mob.real_name +" ("+new_mob.job.title+")?", "Take SSD mob", list("Yes", "No",))) + if("No") + return if(isxeno(new_mob)) var/mob/living/carbon/xenomorph/ssd_xeno = new_mob if(ssd_xeno.tier != XENO_TIER_MINION && XENODEATHTIME_CHECK(owner)) @@ -85,13 +87,20 @@ if(is_banned_from(owner.ckey, new_mob?.job?.title)) to_chat(owner, span_warning("You are jobbaned from the [new_mob?.job.title] role.")) return + + if(!ishuman(new_mob)) + message_admins(span_adminnotice("[owner.key] took control of [new_mob.name] as [new_mob.p_they()] was ssd.")) + log_admin("[owner.key] took control of [new_mob.name] as [new_mob.p_they()] was ssd.") + new_mob.transfer_mob(owner) + return + if(CONFIG_GET(flag/prevent_dupe_names) && GLOB.real_names_joined.Find(owner.client.prefs.real_name)) + to_chat(usr, span_warning("Someone has already joined the round with this character name. Please pick another.")) + return message_admins(span_adminnotice("[owner.key] took control of [new_mob.name] as [new_mob.p_they()] was ssd.")) log_admin("[owner.key] took control of [new_mob.name] as [new_mob.p_they()] was ssd.") new_mob.transfer_mob(owner) - if(!ishuman(new_mob)) - return var/mob/living/carbon/human/H = new_mob - H.fully_replace_character_name(H.real_name, H.species.random_name(H.gender)) + H.on_transformation() //respawn button for campaign gamemode /datum/action/observer_action/campaign_respawn diff --git a/code/datums/gamemodes/_game_mode.dm b/code/datums/gamemodes/_game_mode.dm index 486f6966016e1..7db1fc9f31cbe 100644 --- a/code/datums/gamemodes/_game_mode.dm +++ b/code/datums/gamemodes/_game_mode.dm @@ -590,7 +590,7 @@ GLOBAL_LIST_INIT(bioscan_locations, list( if(job.job_flags & JOB_FLAG_SPECIALNAME) name_to_check = job.get_special_name(NP.client) if(CONFIG_GET(flag/prevent_dupe_names) && GLOB.real_names_joined.Find(name_to_check)) - to_chat(usr, "Someone has already joined the round with this character name. Please pick another.") + to_chat(usr, span_warning("Someone has already joined the round with this character name. Please pick another.")) return FALSE if(!SSjob.AssignRole(NP, job, TRUE)) to_chat(usr, "Failed to assign selected role.")