Ports SStyping from Nebula. (#16169)

* Ports SStyping from Nebula.

* the spook

* a

* fix

* bring the fanfare to its knees

* add a speech bubble type pref

---------

Co-authored-by: Matt Atlas <liermattia@gmail.com>
This commit is contained in:
Matt Atlas
2023-04-10 00:08:48 +00:00
committed by GitHub
co-authored by Matt Atlas
parent 2e61f40649
commit ab5d39db19
68 changed files with 490 additions and 175 deletions
@@ -11,6 +11,7 @@
S["spawnpoint"] >> pref.spawnpoint
S["OOC_Notes"] >> pref.metadata
S["floating_chat_color"] >> pref.floating_chat_color
S["speech_bubble_type"] >> pref.speech_bubble_type
if(istype(all_species[pref.species], /datum/species/machine))
S["ipc_tag_status"] >> pref.machine_tag_status
S["ipc_serial_number"] >> pref.machine_serial_number
@@ -25,6 +26,7 @@
S["spawnpoint"] << pref.spawnpoint
S["OOC_Notes"] << pref.metadata
S["floating_chat_color"] << pref.floating_chat_color
S["speech_bubble_type"] << pref.speech_bubble_type
if(istype(all_species[pref.species], /datum/species/machine))
S["ipc_tag_status"] << pref.machine_tag_status
S["ipc_serial_number"] << pref.machine_serial_number
@@ -43,7 +45,8 @@
"metadata",
"spawnpoint",
"species",
"floating_chat_color"
"floating_chat_color",
"speech_bubble_type"
),
"args" = list("id")
),
@@ -76,6 +79,7 @@
"spawnpoint",
"species",
"floating_chat_color",
"speech_bubble_type",
"id" = 1,
"ckey" = 1
),
@@ -102,6 +106,7 @@
"id" = pref.current_character,
"char_id" = pref.current_character,
"floating_chat_color" = pref.floating_chat_color,
"speech_bubble_type" = pref.speech_bubble_type,
"ckey" = PREF_CLIENT_CKEY
)
@@ -145,6 +150,12 @@
pref.spawnpoint = sanitize_inlist(pref.spawnpoint, SSatlas.spawn_locations, initial(pref.spawnpoint))
pref.machine_tag_status = text2num(pref.machine_tag_status) // SQL queries return as text, so make this a num
pref.floating_chat_color = sanitize_hexcolor(pref.floating_chat_color, get_random_colour(0, 160, 230))
var/datum/species/S = all_species[pref.species]
if(!pref.speech_bubble_type || !(pref.speech_bubble_type in S.possible_speech_bubble_types))
if(istype(S))
pref.speech_bubble_type = S.possible_speech_bubble_types[1]
else
pref.speech_bubble_type = "normal"
/datum/category_item/player_setup_item/general/basic/content(var/mob/user)
var/list/dat = list("<b>Name:</b> ")
@@ -162,6 +173,7 @@
dat += "<b>Age:</b> <a href='?src=\ref[src];age=1'>[pref.age]</a><br>"
dat += "<b>Spawn Point</b>: <a href='?src=\ref[src];spawnpoint=1'>[pref.spawnpoint]</a><br>"
dat += "<b>Floating Chat Color:</b> <a href='?src=\ref[src];select_floating_chat_color=1'><b>[pref.floating_chat_color]</b></a><br>"
dat += "<b>Speech Bubble Type:</b> <a href='?src=\ref[src];speech_bubble_type=1'><b>[capitalize_first_letters(pref.speech_bubble_type)]</b></a><br>"
if(istype(S, /datum/species/machine))
if(pref.can_edit_ipc_tag)
dat += "<b>Has Tag:</b> <a href='?src=\ref[src];ipc_tag=1'>[pref.machine_tag_status ? "Yes" : "No"]</a><br>"
@@ -234,6 +246,11 @@
if(ishuman(H))
H.set_floating_chat_color(new_fc_color)
return TOPIC_REFRESH
else if(href_list["speech_bubble_type"])
var/datum/species/S = all_species[pref.species]
pref.speech_bubble_type = next_in_list(pref.speech_bubble_type, S.possible_speech_bubble_types)
return TOPIC_REFRESH
else if(href_list["gender"])
var/datum/species/S = all_species[pref.species]