diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm index b1146614366..3e5777cde52 100644 --- a/code/__DEFINES/dcs/signals.dm +++ b/code/__DEFINES/dcs/signals.dm @@ -43,6 +43,9 @@ /// signals from globally accessible objects +///from SSJob when DivideOccupations is called +#define COMSIG_OCCUPATIONS_DIVIDED "occupations_divided" + ///from SSsun when the sun changes position : (azimuth) #define COMSIG_SUN_MOVED "sun_moved" diff --git a/code/_globalvars/lists/names.dm b/code/_globalvars/lists/names.dm index dfed7c9ad98..862f3c74c8b 100644 --- a/code/_globalvars/lists/names.dm +++ b/code/_globalvars/lists/names.dm @@ -25,6 +25,7 @@ GLOBAL_LIST_INIT(megacarp_last_names, world.file2list("strings/names/megacarp2.t GLOBAL_LIST_INIT(verbs, world.file2list("strings/names/verbs.txt")) GLOBAL_LIST_INIT(ing_verbs, world.file2list("strings/names/ing_verbs.txt")) +GLOBAL_LIST_INIT(martial_prefix, world.file2list("strings/names/martial_prefix.txt")) GLOBAL_LIST_INIT(adverbs, world.file2list("strings/names/adverbs.txt")) GLOBAL_LIST_INIT(adjectives, world.file2list("strings/names/adjectives.txt")) GLOBAL_LIST_INIT(gross_adjectives, world.file2list("strings/names/gross_adjectives.txt")) diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm index d4c1ffeda26..c3c647aa192 100644 --- a/code/controllers/subsystem/job.dm +++ b/code/controllers/subsystem/job.dm @@ -281,12 +281,7 @@ SUBSYSTEM_DEF(job) //Setup new player list and get the jobs list JobDebug("Running DO") - //Holder for Triumvirate is stored in the SSticker, this just processes it - if(SSticker.triai) - for(var/datum/job/ai/A in occupations) - A.spawn_positions = 3 - for(var/obj/effect/landmark/start/ai/secondary/S in GLOB.start_landmarks_list) - S.latejoin_active = TRUE + SEND_SIGNAL(src, COMSIG_OCCUPATIONS_DIVIDED) //Get the players who are ready for(var/i in GLOB.new_player_list) diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 021fcab7d99..ccda4edc811 100755 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -26,11 +26,6 @@ SUBSYSTEM_DEF(ticker) var/admin_delay_notice = "" //a message to display to anyone who tries to restart the world after a delay var/ready_for_reboot = FALSE //all roundend preparation done with, all that's left is reboot - ///If set to an anonymous theme datum then people spawn with said themed anon name (see anonymousnames.dm) - var/datum/anonymous_theme/anonymousnames - ///Boolean to see if the game needs to set up a triumvirate ai (see tripAI.dm) - var/triai = FALSE - var/tipped = FALSE //Did we broadcast the tip of the day yet? var/selected_tip // What will be the tip of the day? @@ -522,8 +517,6 @@ SUBSYSTEM_DEF(ticker) delay_end = SSticker.delay_end - anonymousnames = SSticker.anonymousnames - triai = SSticker.triai tipped = SSticker.tipped selected_tip = SSticker.selected_tip diff --git a/code/modules/admin/verbs/ai_triumvirate.dm b/code/modules/admin/verbs/ai_triumvirate.dm new file mode 100644 index 00000000000..5d310366a43 --- /dev/null +++ b/code/modules/admin/verbs/ai_triumvirate.dm @@ -0,0 +1,48 @@ + +///global reference to the current theme, if there is one. +GLOBAL_DATUM(triple_ai_controller, /datum/triple_ai_controller) + +/** + * The triple ai controller handles the admin triple AI mode, if enabled. + * It is first created when "Toggle AI Triumvirate" triggers it, and it can be referenced from GLOB.triple_ai_controller + * After it handles roundstart business, it cleans itself up. + */ +/datum/triple_ai_controller + +/datum/triple_ai_controller/New() + . = ..() + RegisterSignal(SSjob, COMSIG_OCCUPATIONS_DIVIDED, .proc/on_occupations_divided) + +/datum/triple_ai_controller/proc/on_occupations_divided(datum/source) + SIGNAL_HANDLER + + for(var/datum/job/ai/ai_datum in SSjob.occupations) + ai_datum.spawn_positions = 3 + for(var/obj/effect/landmark/start/ai/secondary/secondary_ai_spawn in GLOB.start_landmarks_list) + secondary_ai_spawn.latejoin_active = TRUE + qdel(src) + +/datum/triple_ai_controller/Destroy(force) + UnregisterSignal(SSjob, COMSIG_OCCUPATIONS_DIVIDED) + GLOB.triple_ai_controller = null + . = ..() + +/client/proc/triple_ai() + set category = "Admin.Events" + set name = "Toggle AI Triumvirate" + + if(SSticker.current_state > GAME_STATE_PREGAME) + to_chat(usr, "This option is currently only usable during pregame. This may change at a later date.", confidential = TRUE) + return + + var/datum/job/job = SSjob.GetJob("AI") + if(!job) + to_chat(usr, "Unable to locate the AI job", confidential = TRUE) + return + + if(!GLOB.triple_ai_controller) + GLOB.triple_ai_controller = new() + else + QDEL_NULL(GLOB.triple_ai_controller) + to_chat(usr, "There will[GLOB.triple_ai_controller ? "" : "not"] be an AI Triumvirate at round start.") + message_admins("[key_name_admin(usr)] has toggled [GLOB.triple_ai_controller ? "on" : "off"] triple AIs at round start.") diff --git a/code/modules/admin/verbs/anonymousnames.dm b/code/modules/admin/verbs/anonymousnames.dm index c46425e0a95..aae4d24d65c 100644 --- a/code/modules/admin/verbs/anonymousnames.dm +++ b/code/modules/admin/verbs/anonymousnames.dm @@ -1,4 +1,7 @@ +///global reference to the current theme, if there is one. +GLOBAL_DATUM(current_anonymous_theme, /datum/anonymous_theme) + /*Anon names! A system to make all players have random names/aliases instead of their static, for admin events/fuckery! contains both the anon names proc and the datums for each. @@ -8,25 +11,12 @@ set category = "Admin.Events" set name = "Setup Anonymous Names" - if(SSticker.anonymousnames) + if(GLOB.current_anonymous_theme) var/response = tgui_alert(usr, "Anon mode is currently enabled. Disable?", "cold feet", list("Disable Anon Names", "Keep it Enabled")) if(response != "Disable Anon Names") return - QDEL_NULL(SSticker.anonymousnames) message_admins("[key_name_admin(usr)] has disabled anonymous names.") - if(SSticker.current_state < GAME_STATE_PREGAME) - return - priority_announce("Names and Identities have been restored.", "Identity Restoration", SSstation.announcer.get_rand_alert_sound()) - for(var/mob/living/player in GLOB.player_list) - if(!player.mind || (!ishuman(player) && !issilicon(player)) || !SSjob.GetJob(player.mind.assigned_role)) - continue - var/old_name = player.real_name //before restoration - if(issilicon(player)) - var/is_AI = isAI(player) - player.apply_pref_name("[is_AI ? "ai" : "cyborg"]", player.client) - else - player.client.prefs.copy_to(player, antagonist = (LAZYLEN(player.mind.antag_datums) > 0), is_latejoiner = FALSE) - player.fully_replace_character_name(old_name, player.real_name) //this changes IDs and PDAs and whatnot + QDEL_NULL(GLOB.current_anonymous_theme) return var/list/input_list = list("Cancel") for(var/_theme in typesof(/datum/anonymous_theme)) @@ -35,24 +25,68 @@ var/result = input(usr, "Choose an anonymous theme","going dark") as null|anything in input_list if(!usr || !result || result == "Cancel") return - result = input_list[result] + var/datum/anonymous_theme/chosen_theme = input_list[result] + var/extras_enabled = "No" var/alert_players = "No" if(SSticker.current_state > GAME_STATE_PREGAME) //before anonnames is done, for asking a sleep - alert_players = tgui_alert(usr, "Alert crew? These are IC Themed FROM centcom.", "2016 admins didn't miss roundstart", list("Yes", "No")) - SSticker.anonymousnames = new result() - if(alert_players == "Yes") - priority_announce(SSticker.anonymousnames.announcement_alert, "Identity Loss", SSstation.announcer.get_rand_alert_sound()) + if(initial(chosen_theme.extras_enabled)) + extras_enabled = tgui_alert(usr, extras_enabled, "extras", list("Yes", "No")) + alert_players = tgui_alert(usr, "Alert crew? These are IC Themed FROM centcom.", "announcement", list("Yes", "No")) + //turns "Yes" and "No" into TRUE and FALSE + extras_enabled = extras_enabled == "Yes" + alert_players = alert_players == "Yes" + GLOB.current_anonymous_theme = new chosen_theme(extras_enabled, alert_players) + message_admins("[key_name_admin(usr)] has enabled anonymous names. THEME: [GLOB.current_anonymous_theme].") + +/* Datum singleton initialized by the client proc to hold the naming generation */ +/datum/anonymous_theme + ///name of the anonymous theme, seen by admins pressing buttons to enable this + var/name = "Randomized Names" + ///if admins get the option to enable extras, this is the prompt to enable it. + var/extras_prompt + ///extra non-name related fluff that is optional for admins to enable. One example is the wizard theme giving everyone random robes. + var/extras_enabled + +/datum/anonymous_theme/New(extras_enabled = FALSE, alert_players = TRUE) + . = ..() + src.extras_enabled = extras_enabled + if(extras_enabled) + theme_extras() + if(alert_players) + announce_to_all_players() anonymous_all_players() - message_admins("[key_name_admin(usr)] has enabled anonymous names. THEME: [SSticker.anonymousnames].") +/datum/anonymous_theme/Destroy(force) + restore_all_players() + . = ..() + +/** + * theme_extras: optional effects enabled here from a proc that will trigger once on creation of anon mode. + */ +/datum/anonymous_theme/proc/theme_extras() + return + +/** + * player_extras: optional effects enabled here from a proc that will trigger for every player renamed. + */ +/datum/anonymous_theme/proc/player_extras(mob/living/player) + return + +/** + * announce_to_all_players: sends an annonuncement. + * + * it's in a proc so it can be a non-constant expression. + */ +/datum/anonymous_theme/proc/announce_to_all_players() + priority_announce("A recent bureaucratic error in the Organic Resources Department has resulted in a necessary full recall of all identities and names until further notice.", "Identity Loss", SSstation.announcer.get_rand_alert_sound()) /** * anonymous_all_players: sets all crewmembers on station anonymous. * - * why is this a proc instead of just part of above? events use this as well. + * called when the anonymous theme is created regardless of extra theming */ -/proc/anonymous_all_players() - var/datum/anonymous_theme/theme = SSticker.anonymousnames +/datum/anonymous_theme/proc/anonymous_all_players() + var/datum/anonymous_theme/theme = GLOB.current_anonymous_theme for(var/mob/living/player in GLOB.player_list) if(!player.mind || (!ishuman(player) && !issilicon(player)) || !SSjob.GetJob(player.mind.assigned_role)) continue @@ -62,11 +96,25 @@ var/original_name = player.real_name //id will not be changed if you do not do this randomize_human(player) //do this first so the special name can be given player.fully_replace_character_name(original_name, theme.anonymous_name(player)) + if(extras_enabled) + player_extras(player) -/* Datum singleton initialized by the client proc to hold the naming generation */ -/datum/anonymous_theme - var/name = "Randomized Names" - var/announcement_alert = "A recent bureaucratic error in the Organic Resources Department has resulted in a necessary full recall of all identities and names until further notice." +/** + * restore_all_players: sets all crewmembers on station back to their preference name. + * + * called when the anonymous theme is removed regardless of extra theming + */ +/datum/anonymous_theme/proc/restore_all_players() + priority_announce("Names and Identities have been restored.", "Identity Restoration", SSstation.announcer.get_rand_alert_sound()) + for(var/mob/living/player in GLOB.player_list) + if(!player.mind || (!ishuman(player) && !issilicon(player)) || !SSjob.GetJob(player.mind.assigned_role)) + continue + var/old_name = player.real_name //before restoration + if(issilicon(player)) + player.apply_pref_name("[isAI(player) ? "ai" : "cyborg"]", player.client) + else + player.client.prefs.copy_to(player, antagonist = (LAZYLEN(player.mind.antag_datums) > 0), is_latejoiner = FALSE) + player.fully_replace_character_name(old_name, player.real_name) //this changes IDs and PDAs and whatnot /** * anonymous_name: generates a random name, based off of whatever the round's anonymousnames is set to. @@ -74,11 +122,13 @@ * examples: * Employee = "Employee Q5460Z" * Wizards = "Gulstaff of Void" + * Spider Clan = "Initiate Hazuki" + * Stations? = "Refactor Port One" * Arguments: - * * M - mob for preferences and gender + * * target - mob for preferences and gender */ -/datum/anonymous_theme/proc/anonymous_name(mob/M) - return M.client.prefs.pref_species.random_name(M.gender,1) +/datum/anonymous_theme/proc/anonymous_name(mob/target) + return target.client.prefs.pref_species.random_name(target.gender,1) /** * anonymous_ai_name: generates a random name, based off of whatever the round's anonymousnames is set to (but for sillycones). @@ -86,6 +136,8 @@ * examples: * Employee = "Employee Assistant Assuming Delta" * Wizards = "Crystallized Knowledge Nexus +23" + * Spider Clan = "'Leaping Viper' MSO" + * Stations? = "System Port 10" * Arguments: * * is_ai - boolean to decide whether the name has "Core" (AI) or "Assistant" (Cyborg) */ @@ -94,10 +146,12 @@ /datum/anonymous_theme/employees name = "Employees" - announcement_alert = "As punishment for this station's poor productivity when compared to neighbor stations, names and identities will be restricted until further notice." -/datum/anonymous_theme/employees/anonymous_name(mob/M) - var/is_head_of_staff = (M.mind.assigned_role in GLOB.command_positions) +/datum/anonymous_theme/employees/announce_to_all_players() + priority_announce("As punishment for this station's poor productivity when compared to neighbor stations, names and identities will be restricted until further notice.", "Finance Report", SSstation.announcer.get_rand_alert_sound()) + +/datum/anonymous_theme/employees/anonymous_name(mob/target) + var/is_head_of_staff = (target.mind.assigned_role in GLOB.command_positions) var/name = "[is_head_of_staff ? "Manager" : "Employee"] " for(var/i in 1 to 6) if(prob(30) || i == 1) @@ -113,12 +167,108 @@ /datum/anonymous_theme/wizards name = "Wizard Academy" - announcement_alert = "Your station has been caught by a Wizard Federation Memetic Hazard. You are not y0urself, and yo% a2E 34!NOT4--- Welcome to the Academy, apprentices!" + extras_prompt = "Give everyone random robes too?" -/datum/anonymous_theme/wizards/anonymous_name(mob/M) +/datum/anonymous_theme/wizards/player_extras(mob/living/player) + var/random_path = pick( + /obj/item/storage/box/wizard_kit, + /obj/item/storage/box/wizard_kit/red, + /obj/item/storage/box/wizard_kit/yellow, + /obj/item/storage/box/wizard_kit/magusred, + /obj/item/storage/box/wizard_kit/magusblue, + /obj/item/storage/box/wizard_kit/black\ + ) + player.put_in_hands(new random_path()) + +/datum/anonymous_theme/wizards/announce_to_all_players() + priority_announce("Your station has been caught by a Wizard Federation Memetic Hazard. You are not y0urself, and yo% a2E 34!NOT4--- Welcome to the Academy, apprentices!", "Memetic Hazard", SSstation.announcer.get_rand_alert_sound()) + +/datum/anonymous_theme/wizards/anonymous_name(mob/target) var/wizard_name_first = pick(GLOB.wizard_first) var/wizard_name_second = pick(GLOB.wizard_second) return "[wizard_name_first] [wizard_name_second]" /datum/anonymous_theme/wizards/anonymous_ai_name(is_ai = FALSE) return "Crystallized Knowledge [is_ai ? "Nexus" : "Sliver"] +[rand(1,99)]" //Could two people roll the same number? Yeah, probably. Do I CARE? Nawww + +/obj/item/storage/box/wizard_kit + name = "Generic Wizard Cosplay Kit" + +/obj/item/storage/box/wizard_kit/PopulateContents() + new /obj/item/clothing/head/wizard(src) + new /obj/item/clothing/suit/wizrobe(src) + new /obj/item/clothing/shoes/sandal(src) + +/obj/item/storage/box/wizard_kit/red + name = "Evocation Wizard Cosplay Kit" + +/obj/item/storage/box/wizard_kit/red/PopulateContents() + new /obj/item/clothing/head/wizard/red(src) + new /obj/item/clothing/suit/wizrobe/red(src) + new /obj/item/clothing/shoes/sandal(src) + +/obj/item/storage/box/wizard_kit/yellow + name = "Translocation Wizard Cosplay Kit" + +/obj/item/storage/box/wizard_kit/yellow/PopulateContents() + new /obj/item/clothing/head/wizard/yellow(src) + new /obj/item/clothing/suit/wizrobe/yellow(src) + new /obj/item/clothing/shoes/sandal(src) + +/obj/item/storage/box/wizard_kit/magusred + name = "Conjuration Wizard Cosplay Kit" + +/obj/item/storage/box/wizard_kit/yellow/PopulateContents() + new /obj/item/clothing/head/wizard/magus(src) + new /obj/item/clothing/suit/wizrobe/magusred(src) + new /obj/item/clothing/shoes/sandal(src) + +/obj/item/storage/box/wizard_kit/magusblue + name = "Transmutation Wizard Cosplay Kit" + +/obj/item/storage/box/wizard_kit/yellow/PopulateContents() + new /obj/item/clothing/head/wizard/magus(src) + new /obj/item/clothing/suit/wizrobe/magusblue(src) + new /obj/item/clothing/shoes/sandal(src) + +/obj/item/storage/box/wizard_kit/black + name = "Necromancy Wizard Cosplay Kit" + +/obj/item/storage/box/wizard_kit/black/PopulateContents() + new /obj/item/clothing/head/wizard/black(src) + new /obj/item/clothing/suit/wizrobe/black(src) + new /obj/item/clothing/shoes/sandal(src) + +/datum/anonymous_theme/spider_clan + name = "Spider Clan" + +/datum/anonymous_theme/spider_clan/anonymous_name(mob/target) + return "[pick(GLOB.ninja_titles)] [pick(GLOB.ninja_names)]" + +/datum/anonymous_theme/spider_clan/announce_to_all_players() + priority_announce("Your station has been sold out to the Spider Clan. Your new designations will be applied now.", "New Management", SSstation.announcer.get_rand_alert_sound()) + +/datum/anonymous_theme/spider_clan/anonymous_ai_name(is_ai = FALSE) + var/posibrain_name = pick(GLOB.posibrain_names) + if(is_ai) + return "Shaolin Templemaster [posibrain_name]" + else + var/martial_prefix = capitalize(pick(GLOB.martial_prefix)) + var/martial_style = pick("Monkey", "Tiger", "Viper", "Mantis", "Crane", "Panda", "Bat", "Bear", "Centipede", "Frog") + return "\"[martial_prefix] [martial_style]\" [posibrain_name]" + +/datum/anonymous_theme/station + name = "Stations?" + extras_prompt = "Also flip station name?" + +/datum/anonymous_theme/station/theme_extras() + set_station_name("[pick(GLOB.first_names)] [pick(GLOB.last_names)]") + +/datum/anonymous_theme/station/announce_to_all_players() + priority_announce("Confirmed level 9 reality error event near [station_name()]. All personnel must try their best to carry on, as to not trigger more reality events by accident.", "Central Command Higher Dimensional Affairs", 'sound/misc/notice1.ogg') + +/datum/anonymous_theme/station/anonymous_name(mob/target) + return new_station_name() + +/datum/anonymous_theme/station/anonymous_ai_name(is_ai = FALSE) + return new_station_name() diff --git a/code/modules/admin/verbs/tripAI.dm b/code/modules/admin/verbs/tripAI.dm deleted file mode 100644 index 58990187eeb..00000000000 --- a/code/modules/admin/verbs/tripAI.dm +++ /dev/null @@ -1,15 +0,0 @@ -/client/proc/triple_ai() - set category = "Admin.Events" - set name = "Toggle AI Triumvirate" - - if(SSticker.current_state > GAME_STATE_PREGAME) - to_chat(usr, "This option is currently only usable during pregame. This may change at a later date.", confidential = TRUE) - return - - var/datum/job/job = SSjob.GetJob("AI") - if(!job) - to_chat(usr, "Unable to locate the AI job", confidential = TRUE) - return - SSticker.triai = !SSticker.triai - to_chat(usr, "There will [SSticker.triai ? "" : "not"] be an AI Triumvirate at round start.") - message_admins("[key_name_admin(usr)] has toggled [SSticker.triai ? "on" : "off"] triple AIs at round start.") diff --git a/code/modules/events/wizard/identity_spoof.dm b/code/modules/events/wizard/identity_spoof.dm index e7fcc1bf0ee..3032834b63a 100644 --- a/code/modules/events/wizard/identity_spoof.dm +++ b/code/modules/events/wizard/identity_spoof.dm @@ -8,11 +8,10 @@ . = ..() if(.) return FALSE - if(SSticker.anonymousnames) //already anonymous, ABORT ABORT + if(GLOB.current_anonymous_theme) //already anonymous, ABORT ABORT return FALSE /datum/round_event/wizard/identity_spoof/start() - if(SSticker.anonymousnames) - QDEL_NULL(SSticker.anonymousnames) - SSticker.anonymousnames = new /datum/anonymous_theme/wizards() - anonymous_all_players() + if(GLOB.current_anonymous_theme) + QDEL_NULL(GLOB.current_anonymous_theme) + GLOB.current_anonymous_theme = new /datum/anonymous_theme/wizards(extras_enabled = TRUE, alert_players = TRUE) diff --git a/code/modules/jobs/job_types/ai.dm b/code/modules/jobs/job_types/ai.dm index ad1c21d434d..8a48a9b6a6e 100644 --- a/code/modules/jobs/job_types/ai.dm +++ b/code/modules/jobs/job_types/ai.dm @@ -36,8 +36,8 @@ H.forceMove(lateJoinCore.loc) qdel(lateJoinCore) var/mob/living/silicon/ai/AI = H - if(SSticker.anonymousnames) - AI.fully_replace_character_name(AI.real_name, SSticker.anonymousnames.anonymous_ai_name(TRUE)) + if(GLOB.current_anonymous_theme) + AI.fully_replace_character_name(AI.real_name, GLOB.current_anonymous_theme.anonymous_ai_name(TRUE)) else AI.apply_pref_name("ai", M.client) //If this runtimes oh well jobcode is fucked. //what is this no energy attitude man AI.set_core_display_icon(null, M.client) diff --git a/code/modules/mob/dead/new_player/new_player.dm b/code/modules/mob/dead/new_player/new_player.dm index 8b711ef3172..13011647bf7 100644 --- a/code/modules/mob/dead/new_player/new_player.dm +++ b/code/modules/mob/dead/new_player/new_player.dm @@ -439,7 +439,6 @@ var/mob/living/carbon/human/H = new(loc) var/frn = CONFIG_GET(flag/force_random_names) - var/admin_anon_names = SSticker.anonymousnames if(!frn) frn = is_banned_from(ckey, "Appearance") if(QDELETED(src)) @@ -454,9 +453,9 @@ client.prefs.copy_to(H, antagonist = is_antag, is_latejoiner = transfer_after) - if(admin_anon_names)//overrides random name because it achieves the same effect and is an admin enabled event tool + if(GLOB.current_anonymous_theme)//overrides random name because it achieves the same effect and is an admin enabled event tool randomize_human(H) - H.fully_replace_character_name(null, SSticker.anonymousnames.anonymous_name(H)) + H.fully_replace_character_name(null, GLOB.current_anonymous_theme.anonymous_name(H)) H.dna.update_dna_identity() if(mind) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 6417458c34e..703f9f44cb1 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -170,8 +170,8 @@ var/changed_name = "" if(custom_name) changed_name = custom_name - if(SSticker.anonymousnames) //only robotic renames will allow for anything other than the anonymous one - changed_name = SSticker.anonymousnames.anonymous_ai_name(FALSE) + if(GLOB.current_anonymous_theme) //only robotic renames will allow for anything other than the anonymous one + changed_name = GLOB.current_anonymous_theme.anonymous_ai_name(FALSE) if(!changed_name && C && C.prefs.custom_names["cyborg"] != DEFAULT_CYBORG_NAME) apply_pref_name("cyborg", C) return //built in camera handled in proc diff --git a/strings/names/martial_prefix.txt b/strings/names/martial_prefix.txt new file mode 100644 index 00000000000..1c8a084b11d --- /dev/null +++ b/strings/names/martial_prefix.txt @@ -0,0 +1,22 @@ +leaping +raging +burning +silent +mentored +drunken +spotted +resting +swimming +battered +unbroken +troubled +sneaking +charming +flying +soaring +angry +scared +worried +emperor +curious +blood-spattered \ No newline at end of file diff --git a/tgstation.dme b/tgstation.dme index 4f3caa24db9..16c5e6722ef 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1563,6 +1563,7 @@ #include "code\modules\admin\verbs\adminjump.dm" #include "code\modules\admin\verbs\adminpm.dm" #include "code\modules\admin\verbs\adminsay.dm" +#include "code\modules\admin\verbs\ai_triumvirate.dm" #include "code\modules\admin\verbs\anonymousnames.dm" #include "code\modules\admin\verbs\atmosdebug.dm" #include "code\modules\admin\verbs\beakerpanel.dm" @@ -1596,7 +1597,6 @@ #include "code\modules\admin\verbs\selectequipment.dm" #include "code\modules\admin\verbs\shuttlepanel.dm" #include "code\modules\admin\verbs\spawnobjasmob.dm" -#include "code\modules\admin\verbs\tripAI.dm" #include "code\modules\admin\verbs\SDQL2\SDQL_2.dm" #include "code\modules\admin\verbs\SDQL2\SDQL_2_parser.dm" #include "code\modules\admin\verbs\SDQL2\SDQL_2_wrappers.dm"