Files
Bubberstation/code/modules/admin/verbs/anonymousnames.dm
grungussuss 58501dce77 Reorganizes the sound folder (#86726)
## About The Pull Request

<details>

- renamed ai folder to announcer

-- announcer --
- moved vox_fem to announcer
- moved approachingTG to announcer

- separated the ambience folder into ambience and instrumental
-- ambience --

- created holy folder moved all related sounds there
- created engineering folder and moved all related sounds there
- created security folder and moved ambidet there
- created general folder and moved ambigen there
- created icemoon folder and moved all icebox-related ambience there
- created medical folder and moved all medbay-related ambi there
- created ruin folder and moves all ruins ambi there
- created beach folder and moved seag and shore there
- created lavaland folder and moved related ambi there
- created aurora_caelus folder and placed its ambi there
- created misc folder and moved the rest of the files that don't have a
specific category into it

-- instrumental --

- moved traitor folder here
- created lobby_music folder and placed our songs there (title0 not used
anywhere? - server-side modification?)

-- items --

- moved secdeath to hailer
- moved surgery to handling

-- effects --

- moved chemistry into effects
- moved hallucinations into effects
- moved health into effects
- moved magic into effects

-- vehicles --

- moved mecha into vehicles


created mobs folder

-- mobs --

- moved creatures folder into mobs
- moved voice into mobs

renamed creatures to non-humanoids
renamed voice to humanoids

-- non-humanoids--

created cyborg folder
created hiss folder
moved harmalarm.ogg to cyborg

-- humanoids --




-- misc --

moved ghostwhisper to misc
moved insane_low_laugh to misc

I give up trying to document this.

</details>

- [X] ambience
- [x] announcer
- [x] effects
- [X] instrumental
- [x] items
- [x] machines
- [x] misc 
- [X] mobs
- [X] runtime
- [X] vehicles

- [ ] attributions

## Why It's Good For The Game

This folder is so disorganized that it's vomit inducing, will make it
easier to find and add new sounds, providng a minor structure to the
sound folder.

## Changelog
🆑 grungussuss
refactor: the sound folder in the source code has been reorganized,
please report any oddities with sounds playing or not playing
server: lobby music has been repathed to sound/music/lobby_music
/🆑
2024-09-23 22:24:50 -07:00

278 lines
12 KiB
Plaintext

///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.
this is the setup, it handles announcing crew and other settings for the mode and then creating the datum singleton
*/
/client/proc/anon_names()
set category = "Admin.Events"
set name = "Setup Anonymous Names"
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
message_admins(span_adminnotice("[key_name_admin(usr)] has disabled anonymous names."))
QDEL_NULL(GLOB.current_anonymous_theme)
return
var/list/input_list = list("Cancel")
for(var/_theme in typesof(/datum/anonymous_theme))
var/datum/anonymous_theme/theme = _theme
input_list[initial(theme.name)] = theme
var/result = input(usr, "Choose an anonymous theme","going dark") as null|anything in input_list
if(!usr || !result || result == "Cancel")
return
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
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(span_adminnotice("[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()
/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.
*
* called when the anonymous theme is created regardless of extra theming
*/
/datum/anonymous_theme/proc/anonymous_all_players()
for(var/mob/living/player in GLOB.player_list)
if(!player.mind || (!ishuman(player) && !issilicon(player)) || player.mind.assigned_role.faction != FACTION_STATION)
continue
if(issilicon(player))
player.fully_replace_character_name(player.real_name, anonymous_ai_name(isAI(player)))
return
var/mob/living/carbon/human/human_mob = player
var/original_name = player.real_name //id will not be changed if you do not do this
randomize_human_normie(player) //do this first so the special name can be given
player.fully_replace_character_name(original_name, anonymous_name(player))
if(extras_enabled)
player_extras(player)
human_mob.dna.update_dna_identity()
/**
* 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)) || player.mind.assigned_role.faction != FACTION_STATION)
continue
var/old_name = player.real_name //before restoration
if(issilicon(player))
INVOKE_ASYNC(player, TYPE_PROC_REF(/mob, apply_pref_name), "[isAI(player) ? /datum/preference/name/ai : /datum/preference/name/cyborg]", player.client)
else
player.client.prefs.apply_prefs_to(player) // This is not sound logic, as the prefs may have changed since then.
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.
*
* examples:
* Employee = "Employee Q5460Z"
* Wizards = "Gulstaff of Void"
* Spider Clan = "Initiate Hazuki"
* Stations? = "Refactor Port One"
* Arguments:
* * target - mob for preferences and gender
*/
/datum/anonymous_theme/proc/anonymous_name(mob/target)
var/datum/client_interface/client = GET_CLIENT(target)
var/species_type = client.prefs.read_preference(/datum/preference/choiced/species)
return generate_random_name_species_based(target.gender, TRUE, species_type)
/**
* anonymous_ai_name: generates a random name, based off of whatever the round's anonymousnames is set to (but for sillycones).
*
* 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 JOB_ASSISTANT (Cyborg)
*/
/datum/anonymous_theme/proc/anonymous_ai_name(is_ai = FALSE)
return pick(GLOB.ai_names)
/datum/anonymous_theme/employees
name = "Employees"
/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.job_flags & JOB_HEAD_OF_STAFF
var/name = "[is_head_of_staff ? "Manager" : "Employee"] "
for(var/i in 1 to 6)
if(prob(30) || i == 1)
name += ascii2text(rand(65, 90)) //A - Z
else
name += ascii2text(rand(48, 57)) //0 - 9
return name
/datum/anonymous_theme/employees/anonymous_ai_name(is_ai = FALSE)
var/verbs = capitalize(pick(GLOB.ing_verbs))
var/phonetic = pick(GLOB.phonetic_alphabet)
return "Employee [is_ai ? "Core" : JOB_ASSISTANT] [verbs] [phonetic]"
/datum/anonymous_theme/wizards
name = "Wizard Academy"
extras_prompt = "Give everyone random robes too?"
/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 set station name to be a random human 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/announcer/notice/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()