From 4e6d1f3d7006fdc4cc700b3a5f98ef795a4c1037 Mon Sep 17 00:00:00 2001 From: Rukofamicom Date: Tue, 3 Sep 2024 22:15:49 -0500 Subject: [PATCH] Removes limit on posibrains, adds name randomizer --- code/__HELPERS/mobs.dm | 12 ++++++++++++ code/_globalvars/lists/mobs.dm | 2 +- code/modules/mob/living/brain/posibrain.dm | 7 +------ code/modules/mob/living/silicon/robot/robot.dm | 2 +- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 3a763818771b6..2c0166382de24 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -775,6 +775,18 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new) return TRUE return FALSE +//// Special handler for cyborg naming to ensure no cyborgs ever take a name that has already been used. Prevents "respawning" when the same player takes two posibrains. +/mob/proc/apply_cyborg_name(preference_type, client/C) + + //This name has already been taken, refuse to pass it on and return false + if(preference_type in GLOB.cyborg_name_list) + to_chat(C.mob, "Cyborg name randomized. Cyborg name already used this round by another character.") + return FALSE + + //Name is original, add it to the list to prevent it from being used again. + GLOB.cyborg_name_list += preference_type + return apply_pref_name(preference_type, C) + /proc/view_or_range(distance = world.view , center = usr , type) switch(type) if("view") diff --git a/code/_globalvars/lists/mobs.dm b/code/_globalvars/lists/mobs.dm index 73b9a2c418b4a..4daa7b969bfd6 100644 --- a/code/_globalvars/lists/mobs.dm +++ b/code/_globalvars/lists/mobs.dm @@ -52,7 +52,7 @@ GLOBAL_LIST_EMPTY(mob_config_movespeed_type_lookup) GLOBAL_LIST_EMPTY(emote_list) -GLOBAL_LIST_EMPTY(posi_key_list) +GLOBAL_LIST_EMPTY(cyborg_name_list) GLOBAL_LIST_INIT(construct_radial_images, list( CONSTRUCT_JUGGERNAUT = image(icon = 'icons/mob/cult.dmi', icon_state = "juggernaut"), diff --git a/code/modules/mob/living/brain/posibrain.dm b/code/modules/mob/living/brain/posibrain.dm index 826fade383784..4fba144a59161 100644 --- a/code/modules/mob/living/brain/posibrain.dm +++ b/code/modules/mob/living/brain/posibrain.dm @@ -94,9 +94,6 @@ GLOBAL_VAR(posibrain_notify_cooldown) return FALSE if(is_occupied() || QDELETED(brainmob) || QDELETED(src) || QDELETED(user)) return FALSE - if(user.ckey in GLOB.posi_key_list) - to_chat(user, "Positronic brain spawns limited to 1 per round.") - return FALSE if(!(GLOB.ghost_role_flags & GHOSTROLE_SILICONS)) to_chat(user, "Central Command has temporarily outlawed posibrain sentience in this sector...") return FALSE @@ -108,9 +105,7 @@ GLOBAL_VAR(posibrain_notify_cooldown) return FALSE if(brainmob.suiciding) //clear suicide status if the old occupant suicided. brainmob.set_suicide(FALSE) - var/ckey = user.ckey - if(transfer_personality(user)) - GLOB.posi_key_list += ckey + transfer_personality(user) var/datum/job/posibrain/pj = SSjob.GetJob(JOB_NAME_POSIBRAIN) pj.remove_posi_slot(src) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 1715cb7dd0177..3bb095ecb8ba0 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -297,7 +297,7 @@ if(custom_name) changed_name = custom_name if(changed_name == "" && C && C.prefs.read_character_preference(/datum/preference/name/cyborg) != DEFAULT_CYBORG_NAME) - if(apply_pref_name(/datum/preference/name/cyborg, C)) + if(apply_cyborg_name(/datum/preference/name/cyborg, C)) return //built in camera handled in proc if(!changed_name) changed_name = get_standard_name()