|
|
|
|
@@ -123,7 +123,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|
|
|
|
"has_cock" = FALSE,
|
|
|
|
|
"cock_shape" = "Human",
|
|
|
|
|
"cock_length" = 6,
|
|
|
|
|
"cock_girth_ratio" = COCK_GIRTH_RATIO_DEF,
|
|
|
|
|
"cock_diameter_ratio" = COCK_DIAMETER_RATIO_DEF,
|
|
|
|
|
"cock_color" = "fff",
|
|
|
|
|
"has_sheath" = FALSE,
|
|
|
|
|
"sheath_color" = "fff",
|
|
|
|
|
@@ -218,6 +218,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|
|
|
|
var/icon/bgstate = "steel"
|
|
|
|
|
var/list/bgstate_options = list("000", "midgrey", "FFF", "white", "steel", "techmaint", "dark", "plating", "reinforced")
|
|
|
|
|
|
|
|
|
|
var/show_mismatched_markings = FALSE //determines whether or not the markings lists should show markings that don't match the currently selected species. Intentionally left unsaved.
|
|
|
|
|
|
|
|
|
|
/datum/preferences/New(client/C)
|
|
|
|
|
parent = C
|
|
|
|
|
|
|
|
|
|
@@ -419,6 +421,14 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|
|
|
|
//Mutant stuff
|
|
|
|
|
var/mutant_category = 0
|
|
|
|
|
|
|
|
|
|
dat += APPEARANCE_CATEGORY_COLUMN
|
|
|
|
|
dat += "<h3>Show mismatched markings</h3>"
|
|
|
|
|
dat += "<a style='display:block;width:100px' href='?_src_=prefs;preference=mismatched_markings;task=input'>[show_mismatched_markings ? "Yes" : "No"]</a>"
|
|
|
|
|
mutant_category++
|
|
|
|
|
if(mutant_category >= MAX_MUTANT_ROWS) //just in case someone sets the max rows to 1 or something dumb like that
|
|
|
|
|
dat += "</td>"
|
|
|
|
|
mutant_category = 0
|
|
|
|
|
|
|
|
|
|
if("tail_lizard" in pref_species.default_features)
|
|
|
|
|
if(!mutant_category)
|
|
|
|
|
dat += APPEARANCE_CATEGORY_COLUMN
|
|
|
|
|
@@ -1626,6 +1636,9 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|
|
|
|
else
|
|
|
|
|
to_chat(user, "<span class='danger'>Invalid color. Your color is not bright enough.</span>")
|
|
|
|
|
|
|
|
|
|
if("mismatched_markings")
|
|
|
|
|
show_mismatched_markings = !show_mismatched_markings
|
|
|
|
|
|
|
|
|
|
if("ipc_screen")
|
|
|
|
|
var/new_ipc_screen
|
|
|
|
|
new_ipc_screen = input(user, "Choose your character's screen:", "Character Preference") as null|anything in GLOB.ipc_screens_list
|
|
|
|
|
@@ -1633,8 +1646,18 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|
|
|
|
features["ipc_screen"] = new_ipc_screen
|
|
|
|
|
|
|
|
|
|
if("ipc_antenna")
|
|
|
|
|
var/list/snowflake_antenna_list = list()
|
|
|
|
|
//Potential todo: turn all of THIS into a define to reduce copypasta.
|
|
|
|
|
for(var/path in GLOB.ipc_antennas_list)
|
|
|
|
|
var/datum/sprite_accessory/antenna/instance = GLOB.ipc_antennas_list[path]
|
|
|
|
|
if(istype(instance, /datum/sprite_accessory))
|
|
|
|
|
var/datum/sprite_accessory/S = instance
|
|
|
|
|
if(!show_mismatched_markings && S.recommended_species && !S.recommended_species.Find(pref_species.id))
|
|
|
|
|
continue
|
|
|
|
|
if((!S.ckeys_allowed) || (S.ckeys_allowed.Find(user.client.ckey)))
|
|
|
|
|
snowflake_antenna_list[S.name] = path
|
|
|
|
|
var/new_ipc_antenna
|
|
|
|
|
new_ipc_antenna = input(user, "Choose your character's antenna:", "Character Preference") as null|anything in GLOB.ipc_antennas_list
|
|
|
|
|
new_ipc_antenna = input(user, "Choose your character's antenna:", "Character Preference") as null|anything in snowflake_antenna_list
|
|
|
|
|
if(new_ipc_antenna)
|
|
|
|
|
features["ipc_antenna"] = new_ipc_antenna
|
|
|
|
|
|
|
|
|
|
@@ -1654,6 +1677,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|
|
|
|
var/datum/sprite_accessory/tails/human/instance = GLOB.tails_list_human[path]
|
|
|
|
|
if(istype(instance, /datum/sprite_accessory))
|
|
|
|
|
var/datum/sprite_accessory/S = instance
|
|
|
|
|
if(!show_mismatched_markings && S.recommended_species && !S.recommended_species.Find(pref_species.id))
|
|
|
|
|
continue
|
|
|
|
|
if((!S.ckeys_allowed) || (S.ckeys_allowed.Find(user.client.ckey)))
|
|
|
|
|
snowflake_tails_list[S.name] = path
|
|
|
|
|
var/new_tail
|
|
|
|
|
@@ -1671,6 +1696,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|
|
|
|
var/datum/sprite_accessory/mam_tails/instance = GLOB.mam_tails_list[path]
|
|
|
|
|
if(istype(instance, /datum/sprite_accessory))
|
|
|
|
|
var/datum/sprite_accessory/S = instance
|
|
|
|
|
if(!show_mismatched_markings && S.recommended_species && !S.recommended_species.Find(pref_species.id))
|
|
|
|
|
continue
|
|
|
|
|
if((!S.ckeys_allowed) || (S.ckeys_allowed.Find(user.client.ckey)))
|
|
|
|
|
snowflake_tails_list[S.name] = path
|
|
|
|
|
var/new_tail
|
|
|
|
|
@@ -1694,6 +1721,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|
|
|
|
var/datum/sprite_accessory/mam_snouts/instance = GLOB.snouts_list[path]
|
|
|
|
|
if(istype(instance, /datum/sprite_accessory))
|
|
|
|
|
var/datum/sprite_accessory/S = instance
|
|
|
|
|
if(!show_mismatched_markings && S.recommended_species && !S.recommended_species.Find(pref_species.id))
|
|
|
|
|
continue
|
|
|
|
|
if((!S.ckeys_allowed) || (S.ckeys_allowed.Find(user.client.ckey)))
|
|
|
|
|
snowflake_snouts_list[S.name] = path
|
|
|
|
|
var/new_snout
|
|
|
|
|
@@ -1709,6 +1738,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|
|
|
|
var/datum/sprite_accessory/mam_snouts/instance = GLOB.mam_snouts_list[path]
|
|
|
|
|
if(istype(instance, /datum/sprite_accessory))
|
|
|
|
|
var/datum/sprite_accessory/S = instance
|
|
|
|
|
if(!show_mismatched_markings && S.recommended_species && !S.recommended_species.Find(pref_species.id))
|
|
|
|
|
continue
|
|
|
|
|
if((!S.ckeys_allowed) || (S.ckeys_allowed.Find(user.client.ckey)))
|
|
|
|
|
snowflake_mam_snouts_list[S.name] = path
|
|
|
|
|
var/new_mam_snouts
|
|
|
|
|
@@ -1806,6 +1837,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|
|
|
|
var/datum/sprite_accessory/taur/instance = GLOB.taur_list[path]
|
|
|
|
|
if(istype(instance, /datum/sprite_accessory))
|
|
|
|
|
var/datum/sprite_accessory/S = instance
|
|
|
|
|
if(!show_mismatched_markings && S.recommended_species && !S.recommended_species.Find(pref_species.id))
|
|
|
|
|
continue
|
|
|
|
|
if((!S.ckeys_allowed) || (S.ckeys_allowed.Find(user.client.ckey)))
|
|
|
|
|
snowflake_taur_list[S.name] = path
|
|
|
|
|
var/new_taur
|
|
|
|
|
@@ -1824,6 +1857,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|
|
|
|
var/datum/sprite_accessory/ears/instance = GLOB.ears_list[path]
|
|
|
|
|
if(istype(instance, /datum/sprite_accessory))
|
|
|
|
|
var/datum/sprite_accessory/S = instance
|
|
|
|
|
if(!show_mismatched_markings && S.recommended_species && !S.recommended_species.Find(pref_species.id))
|
|
|
|
|
continue
|
|
|
|
|
if((!S.ckeys_allowed) || (S.ckeys_allowed.Find(user.client.ckey)))
|
|
|
|
|
snowflake_ears_list[S.name] = path
|
|
|
|
|
var/new_ears
|
|
|
|
|
@@ -1837,6 +1872,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|
|
|
|
var/datum/sprite_accessory/mam_ears/instance = GLOB.mam_ears_list[path]
|
|
|
|
|
if(istype(instance, /datum/sprite_accessory))
|
|
|
|
|
var/datum/sprite_accessory/S = instance
|
|
|
|
|
if(!show_mismatched_markings && S.recommended_species && !S.recommended_species.Find(pref_species.id))
|
|
|
|
|
continue
|
|
|
|
|
if((!S.ckeys_allowed) || (S.ckeys_allowed.Find(user.client.ckey)))
|
|
|
|
|
snowflake_ears_list[S.name] = path
|
|
|
|
|
var/new_ears
|
|
|
|
|
@@ -1850,6 +1887,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|
|
|
|
var/datum/sprite_accessory/mam_body_markings/instance = GLOB.mam_body_markings_list[path]
|
|
|
|
|
if(istype(instance, /datum/sprite_accessory))
|
|
|
|
|
var/datum/sprite_accessory/S = instance
|
|
|
|
|
if(!show_mismatched_markings && S.recommended_species && !S.recommended_species.Find(pref_species.id))
|
|
|
|
|
continue
|
|
|
|
|
if((!S.ckeys_allowed) || (S.ckeys_allowed.Find(user.client.ckey)))
|
|
|
|
|
snowflake_markings_list[S.name] = path
|
|
|
|
|
var/new_mam_body_markings
|
|
|
|
|
@@ -2394,6 +2433,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
|
|
|
|
else
|
|
|
|
|
character.Digitigrade_Leg_Swap(TRUE)
|
|
|
|
|
|
|
|
|
|
SEND_SIGNAL(character, COMSIG_HUMAN_PREFS_COPIED_TO, src, icon_updates, roundstart_checks)
|
|
|
|
|
|
|
|
|
|
//let's be sure the character updates
|
|
|
|
|
if(icon_updates)
|
|
|
|
|
character.update_body()
|
|
|
|
|
|