|
|
|
@@ -108,7 +108,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
|
|
|
|
var/underwear = "Nude" //underwear type
|
|
|
|
|
var/undershirt = "Nude" //undershirt type
|
|
|
|
|
var/socks = "Nude" //socks type
|
|
|
|
|
var/backbag = 2 //backpack type
|
|
|
|
|
var/backbag = GBACKPACK //backpack type
|
|
|
|
|
var/ha_style = "None" //Head accessory style
|
|
|
|
|
var/r_headacc = 0 //Head accessory colour
|
|
|
|
|
var/g_headacc = 0 //Head accessory colour
|
|
|
|
@@ -175,7 +175,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
|
|
|
|
var/job_karma_low = 0
|
|
|
|
|
|
|
|
|
|
//Keeps track of preferrence for not getting any wanted jobs
|
|
|
|
|
var/alternate_option = 0
|
|
|
|
|
var/alternate_option = 2
|
|
|
|
|
|
|
|
|
|
// maps each organ to either null(intact), "cyborg" or "amputated"
|
|
|
|
|
// will probably not be able to do this for head and torso ;)
|
|
|
|
@@ -268,9 +268,9 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
|
|
|
|
dat += "</td><td width='405px' height='25px' valign='left'>"
|
|
|
|
|
dat += "<center>"
|
|
|
|
|
dat += "Slot <b>[slot_name]</b> - "
|
|
|
|
|
dat += "<a href=\"byond://?src=[user.UID()];preference=open_load_dialog\">Load slot</a> - "
|
|
|
|
|
dat += "<a href=\"byond://?src=[user.UID()];preference=save\">Save slot</a> - "
|
|
|
|
|
dat += "<a href=\"byond://?src=[user.UID()];preference=reload\">Reload slot</a>"
|
|
|
|
|
dat += "<a href=\"byond://?_src_=prefs;preference=open_load_dialog\">Load slot</a> - "
|
|
|
|
|
dat += "<a href=\"byond://?_src_=prefs;preference=save\">Save slot</a> - "
|
|
|
|
|
dat += "<a href=\"byond://?_src_=prefs;preference=reload\">Reload slot</a>"
|
|
|
|
|
dat += "</center>"
|
|
|
|
|
dat += "</td></tr></table>"
|
|
|
|
|
dat += "<table width='100%'><tr><td width='405px' height='200px' valign='top'>"
|
|
|
|
@@ -279,7 +279,8 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
|
|
|
|
dat += "<b>You are banned from using custom names and appearances. \
|
|
|
|
|
You can continue to adjust your characters, but you will be randomised once you join the game.\
|
|
|
|
|
</b><br>"
|
|
|
|
|
dat += "<b>Gender:</b> <a href='?_src_=prefs;preference=gender'>[gender == MALE ? "Male" : "Female"]</a><br>"
|
|
|
|
|
dat += "<b>Gender:</b> <a href='?_src_=prefs;preference=gender'>[gender == MALE ? "Male" : (gender == FEMALE ? "Female" : "Genderless")]</a>"
|
|
|
|
|
dat += "<br>"
|
|
|
|
|
dat += "<b>Age:</b> <a href='?_src_=prefs;preference=age;task=input'>[age]</a><br>"
|
|
|
|
|
dat += "<b>Body:</b> <a href='?_src_=prefs;preference=all;task=random'>(®)</a><br>"
|
|
|
|
|
dat += "<b>Species:</b> <a href='?_src_=prefs;preference=species;task=input'>[species]</a><br>"
|
|
|
|
@@ -293,7 +294,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
|
|
|
|
dat += "<b>Skin Tone:</b> <a href='?_src_=prefs;preference=s_tone;task=input'>[species == "Vox" ? "[s_tone]" : "[-s_tone + 35]/220"]</a><br>"
|
|
|
|
|
dat += "<b>Disabilities:</b> <a href='?_src_=prefs;preference=disabilities'>\[Set\]</a><br>"
|
|
|
|
|
dat += "<b>Nanotrasen Relation:</b> <a href ='?_src_=prefs;preference=nt_relation;task=input'>[nanotrasen_relation]</a><br>"
|
|
|
|
|
dat += "<a href='byond://?src=[user.UID()];preference=flavor_text;task=input'>Set Flavor Text</a><br>"
|
|
|
|
|
dat += "<a href='byond://?_src_=prefs;preference=flavor_text;task=input'>Set Flavor Text</a><br>"
|
|
|
|
|
if(lentext(flavor_text) <= 40)
|
|
|
|
|
if(!lentext(flavor_text)) dat += "\[...\]<br>"
|
|
|
|
|
else dat += "[flavor_text]<br>"
|
|
|
|
@@ -301,7 +302,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
|
|
|
|
|
|
|
|
|
dat += "<h2>Hair & Accessories</h2>"
|
|
|
|
|
|
|
|
|
|
if(species in list("Unathi", "Vulpkanin", "Tajaran", "Machine")) //Species that have head accessories.
|
|
|
|
|
if(species in list("Unathi", "Vulpkanin", "Tajaran", "Machine", "Kidan")) //Species that have head accessories.
|
|
|
|
|
var/headaccessoryname = "Head Accessory: "
|
|
|
|
|
if(species == "Unathi")
|
|
|
|
|
headaccessoryname = "Horns: "
|
|
|
|
@@ -357,7 +358,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
|
|
|
|
if(jobban_isbanned(user, "Records"))
|
|
|
|
|
dat += "<b>You are banned from using character records.</b><br>"
|
|
|
|
|
else
|
|
|
|
|
dat += "<a href=\"byond://?src=[user.UID()];preference=records;record=1\">Character Records</a><br>"
|
|
|
|
|
dat += "<a href=\"byond://?_src_=prefs;preference=records;record=1\">Character Records</a><br>"
|
|
|
|
|
|
|
|
|
|
dat += "<h2>Limbs</h2>"
|
|
|
|
|
if(species in list("Unathi")) //Species with alt heads.
|
|
|
|
@@ -414,7 +415,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
|
|
|
|
dat += "<b>Underwear:</b> <a href ='?_src_=prefs;preference=underwear;task=input'>[underwear]</a><BR>"
|
|
|
|
|
dat += "<b>Undershirt:</b> <a href ='?_src_=prefs;preference=undershirt;task=input'>[undershirt]</a><BR>"
|
|
|
|
|
dat += "<b>Socks:</b> <a href ='?_src_=prefs;preference=socks;task=input'>[socks]</a><BR>"
|
|
|
|
|
dat += "<b>Backpack Type:</b> <a href ='?_src_=prefs;preference=bag;task=input'>[backbaglist[backbag]]</a><br>"
|
|
|
|
|
dat += "<b>Backpack Type:</b> <a href ='?_src_=prefs;preference=bag;task=input'>[backbag]</a><br>"
|
|
|
|
|
|
|
|
|
|
dat += "</td></tr></table>"
|
|
|
|
|
|
|
|
|
@@ -657,7 +658,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
|
|
|
|
else
|
|
|
|
|
HTML += " <font color=red>\[No]</font></a>"
|
|
|
|
|
if(job.alt_titles)
|
|
|
|
|
HTML += "<br><b><a class='white' href=\"byond://?src=[user.UID()];preference=job;task=alt_title;job=\ref[job]\">\[[GetPlayerAltTitle(job)]\]</a></b></td></tr>"
|
|
|
|
|
HTML += "<br><b><a class='white' href=\"byond://?_src_=prefs;preference=job;task=alt_title;job=\ref[job]\">\[[GetPlayerAltTitle(job)]\]</a></b></td></tr>"
|
|
|
|
|
HTML += "</td></tr>"
|
|
|
|
|
continue
|
|
|
|
|
/*
|
|
|
|
@@ -673,7 +674,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
|
|
|
|
HTML += "<font color=[prefLevelColor]>[prefLevelLabel]</font></a>"
|
|
|
|
|
|
|
|
|
|
if(job.alt_titles)
|
|
|
|
|
HTML += "<br><b><a class='white' href=\"byond://?src=[user.UID()];preference=job;task=alt_title;job=\ref[job]\">\[[GetPlayerAltTitle(job)]\]</a></b></td></tr>"
|
|
|
|
|
HTML += "<br><b><a class='white' href=\"?_src_=prefs;preference=job;task=alt_title;job=\ref[job]\">\[[GetPlayerAltTitle(job)]\]</a></b></td></tr>"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
HTML += "</td></tr>"
|
|
|
|
@@ -787,7 +788,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
if(!isnum(desiredLvl))
|
|
|
|
|
to_chat(user, "\red UpdateJobPreference - desired level was not a number. Please notify coders!")
|
|
|
|
|
to_chat(user, "<span class='warning'>UpdateJobPreference - desired level was not a number. Please notify coders!</span>")
|
|
|
|
|
ShowChoices(user)
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
@@ -811,12 +812,8 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
|
|
|
|
|
|
|
|
|
/datum/preferences/proc/SetDisabilities(mob/user)
|
|
|
|
|
var/HTML = "<body>"
|
|
|
|
|
HTML += "<tt><center>"
|
|
|
|
|
|
|
|
|
|
// AUTOFIXED BY fix_string_idiocy.py
|
|
|
|
|
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\client\preferences.dm:474: HTML += "<tt><center>"
|
|
|
|
|
HTML += {"<tt><center>
|
|
|
|
|
<b>Choose disabilities</b><ul>"}
|
|
|
|
|
// END AUTOFIX
|
|
|
|
|
HTML += ShowDisabilityState(user,DISABILITY_FLAG_NEARSIGHTED,"Needs Glasses")
|
|
|
|
|
HTML += ShowDisabilityState(user,DISABILITY_FLAG_FAT,"Obese")
|
|
|
|
|
HTML += ShowDisabilityState(user,DISABILITY_FLAG_EPILEPTIC,"Seizures")
|
|
|
|
@@ -826,50 +823,46 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
|
|
|
|
HTML += ShowDisabilityState(user,DISABILITY_FLAG_MUTE,"Mute")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// AUTOFIXED BY fix_string_idiocy.py
|
|
|
|
|
// C:\Users\Rob\Documents\Projects\vgstation13\code\modules\client\preferences.dm:481: HTML += "</ul>"
|
|
|
|
|
HTML += {"</ul>
|
|
|
|
|
<a href=\"?_src_=prefs;task=close;preference=disabilities\">\[Done\]</a>
|
|
|
|
|
<a href=\"?_src_=prefs;task=reset;preference=disabilities\">\[Reset\]</a>
|
|
|
|
|
</center></tt>"}
|
|
|
|
|
// END AUTOFIX
|
|
|
|
|
user << browse(null, "window=preferences")
|
|
|
|
|
user << browse(HTML, "window=disabil;size=350x300")
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
var/datum/browser/popup = new(user, "disabil", "<div align='center'>Choose Disabilities</div>", 350, 300)
|
|
|
|
|
popup.set_content(HTML)
|
|
|
|
|
popup.open(0)
|
|
|
|
|
|
|
|
|
|
/datum/preferences/proc/SetRecords(mob/user)
|
|
|
|
|
var/HTML = "<body>"
|
|
|
|
|
HTML += "<tt><center>"
|
|
|
|
|
HTML += "<b>Set Character Records</b><br>"
|
|
|
|
|
|
|
|
|
|
HTML += "<a href=\"byond://?src=[user.UID()];preference=records;task=med_record\">Medical Records</a><br>"
|
|
|
|
|
HTML += "<a href=\"byond://?_src_=prefs;preference=records;task=med_record\">Medical Records</a><br>"
|
|
|
|
|
|
|
|
|
|
if(lentext(med_record) <= 40)
|
|
|
|
|
HTML += "[med_record]"
|
|
|
|
|
else
|
|
|
|
|
HTML += "[copytext(med_record, 1, 37)]..."
|
|
|
|
|
|
|
|
|
|
HTML += "<br><br><a href=\"byond://?src=[user.UID()];preference=records;task=gen_record\">Employment Records</a><br>"
|
|
|
|
|
HTML += "<br><a href=\"byond://?_src_=prefs;preference=records;task=gen_record\">Employment Records</a><br>"
|
|
|
|
|
|
|
|
|
|
if(lentext(gen_record) <= 40)
|
|
|
|
|
HTML += "[gen_record]"
|
|
|
|
|
else
|
|
|
|
|
HTML += "[copytext(gen_record, 1, 37)]..."
|
|
|
|
|
|
|
|
|
|
HTML += "<br><br><a href=\"byond://?src=[user.UID()];preference=records;task=sec_record\">Security Records</a><br>"
|
|
|
|
|
HTML += "<br><a href=\"byond://?_src_=prefs;preference=records;task=sec_record\">Security Records</a><br>"
|
|
|
|
|
|
|
|
|
|
if(lentext(sec_record) <= 40)
|
|
|
|
|
HTML += "[sec_record]<br>"
|
|
|
|
|
else
|
|
|
|
|
HTML += "[copytext(sec_record, 1, 37)]...<br>"
|
|
|
|
|
|
|
|
|
|
HTML += "<br>"
|
|
|
|
|
HTML += "<a href=\"byond://?src=[user.UID()];preference=records;records=-1\">\[Done\]</a>"
|
|
|
|
|
HTML += "<a href=\"byond://?_src_=prefs;preference=records;records=-1\">\[Done\]</a>"
|
|
|
|
|
HTML += "</center></tt>"
|
|
|
|
|
|
|
|
|
|
user << browse(null, "window=preferences")
|
|
|
|
|
user << browse(HTML, "window=records;size=350x300")
|
|
|
|
|
return
|
|
|
|
|
var/datum/browser/popup = new(user, "records", "<div align='center'>Character Records</div>", 350, 300)
|
|
|
|
|
popup.set_content(HTML)
|
|
|
|
|
popup.open(0)
|
|
|
|
|
|
|
|
|
|
/datum/preferences/proc/GetPlayerAltTitle(datum/job/job)
|
|
|
|
|
return player_alt_titles.Find(job.title) > 0 \
|
|
|
|
@@ -1031,6 +1024,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
|
|
|
|
/datum/preferences/proc/process_link(mob/user, list/href_list)
|
|
|
|
|
if(!user) return
|
|
|
|
|
|
|
|
|
|
var/datum/species/S = all_species[species]
|
|
|
|
|
if(href_list["preference"] == "job")
|
|
|
|
|
switch(href_list["task"])
|
|
|
|
|
if("close")
|
|
|
|
@@ -1240,7 +1234,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
|
|
|
|
g_skin = rand(0,255)
|
|
|
|
|
b_skin = rand(0,255)
|
|
|
|
|
if("bag")
|
|
|
|
|
backbag = rand(1,4)
|
|
|
|
|
backbag = pick(backbaglist)
|
|
|
|
|
/*if("skin_style")
|
|
|
|
|
h_style = random_skin_style(gender)*/
|
|
|
|
|
if("all")
|
|
|
|
@@ -1266,9 +1260,9 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
|
|
|
|
// var/whitelisted = 0
|
|
|
|
|
|
|
|
|
|
if(config.usealienwhitelist) //If we're using the whitelist, make sure to check it!
|
|
|
|
|
for(var/S in whitelisted_species)
|
|
|
|
|
if(is_alien_whitelisted(user,S))
|
|
|
|
|
new_species += S
|
|
|
|
|
for(var/Spec in whitelisted_species)
|
|
|
|
|
if(is_alien_whitelisted(user,Spec))
|
|
|
|
|
new_species += Spec
|
|
|
|
|
// whitelisted = 1
|
|
|
|
|
// if(!whitelisted)
|
|
|
|
|
// alert(user, "You cannot change your species as you need to be whitelisted. If you wish to be whitelisted contact an admin in-game, on the forums, or on IRC.")
|
|
|
|
@@ -1276,8 +1270,10 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
|
|
|
|
new_species += whitelisted_species
|
|
|
|
|
|
|
|
|
|
species = input("Please select a species", "Character Generation", null) in new_species
|
|
|
|
|
|
|
|
|
|
var/datum/species/NS = all_species[species]
|
|
|
|
|
if(prev_species != species)
|
|
|
|
|
if(NS.has_gender && gender == PLURAL)
|
|
|
|
|
gender = pick(MALE,FEMALE)
|
|
|
|
|
var/datum/robolimb/robohead
|
|
|
|
|
if(species == "Machine")
|
|
|
|
|
var/head_model = "[!rlimb_data["head"] ? "Morpheus Cyberkinetics" : rlimb_data["head"]]"
|
|
|
|
@@ -1315,16 +1311,16 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
|
|
|
|
m_colours["tail"] = "#000000"
|
|
|
|
|
|
|
|
|
|
// Don't wear another species' underwear!
|
|
|
|
|
var/datum/sprite_accessory/S = underwear_list[underwear]
|
|
|
|
|
if(!S || !(species in S.species_allowed))
|
|
|
|
|
var/datum/sprite_accessory/SA = underwear_list[underwear]
|
|
|
|
|
if(!SA || !(species in SA.species_allowed))
|
|
|
|
|
underwear = random_underwear(gender, species)
|
|
|
|
|
|
|
|
|
|
S = undershirt_list[undershirt]
|
|
|
|
|
if(!S || !(species in S.species_allowed))
|
|
|
|
|
SA = undershirt_list[undershirt]
|
|
|
|
|
if(!SA || !(species in SA.species_allowed))
|
|
|
|
|
undershirt = random_undershirt(gender, species)
|
|
|
|
|
|
|
|
|
|
S = socks_list[socks]
|
|
|
|
|
if(!S || !(species in S.species_allowed))
|
|
|
|
|
SA = socks_list[socks]
|
|
|
|
|
if(!SA || !(species in SA.species_allowed))
|
|
|
|
|
socks = random_socks(gender, species)
|
|
|
|
|
|
|
|
|
|
//reset skin tone and colour
|
|
|
|
@@ -1402,7 +1398,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
|
|
|
|
if("h_style")
|
|
|
|
|
var/list/valid_hairstyles = list()
|
|
|
|
|
for(var/hairstyle in hair_styles_list)
|
|
|
|
|
var/datum/sprite_accessory/S = hair_styles_list[hairstyle]
|
|
|
|
|
var/datum/sprite_accessory/SA = hair_styles_list[hairstyle]
|
|
|
|
|
|
|
|
|
|
if(hairstyle == "Bald") //Just in case.
|
|
|
|
|
valid_hairstyles += hairstyle
|
|
|
|
@@ -1414,14 +1410,14 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
|
|
|
|
else
|
|
|
|
|
head_model = rlimb_data["head"]
|
|
|
|
|
var/datum/robolimb/robohead = all_robolimbs[head_model]
|
|
|
|
|
if((species in S.species_allowed) && robohead.is_monitor && ((S.models_allowed && (robohead.company in S.models_allowed)) || !S.models_allowed)) //If this is a hair style native to the user's species, check to see if they have a head with an ipc-style screen and that the head's company is in the screen style's allowed models list.
|
|
|
|
|
if((species in SA.species_allowed) && robohead.is_monitor && ((SA.models_allowed && (robohead.company in SA.models_allowed)) || !SA.models_allowed)) //If this is a hair style native to the user's species, check to see if they have a head with an ipc-style screen and that the head's company is in the screen style's allowed models list.
|
|
|
|
|
valid_hairstyles += hairstyle //Give them their hairstyles if they do.
|
|
|
|
|
else
|
|
|
|
|
if(!robohead.is_monitor && ("Human" in S.species_allowed)) /*If the hairstyle is not native to the user's species and they're using a head with an ipc-style screen, don't let them access it.
|
|
|
|
|
if(!robohead.is_monitor && ("Human" in SA.species_allowed)) /*If the hairstyle is not native to the user's species and they're using a head with an ipc-style screen, don't let them access it.
|
|
|
|
|
But if the user has a robotic humanoid head and the hairstyle can fit humans, let them use it as a wig. */
|
|
|
|
|
valid_hairstyles += hairstyle
|
|
|
|
|
else //If the user is not a species who can have robotic heads, use the default handling.
|
|
|
|
|
if(species in S.species_allowed) //If the user's head is of a species the hairstyle allows, add it to the list.
|
|
|
|
|
if(species in SA.species_allowed) //If the user's head is of a species the hairstyle allows, add it to the list.
|
|
|
|
|
valid_hairstyles += hairstyle
|
|
|
|
|
|
|
|
|
|
var/new_h_style = input(user, "Choose your character's hair style:", "Character Preference") as null|anything in valid_hairstyles
|
|
|
|
@@ -1429,7 +1425,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
|
|
|
|
h_style = new_h_style
|
|
|
|
|
|
|
|
|
|
if("headaccessory")
|
|
|
|
|
if(species in list("Unathi", "Vulpkanin", "Tajaran", "Machine")) //Species with head accessories.
|
|
|
|
|
if(species in list("Unathi", "Vulpkanin", "Tajaran", "Machine", "Kidan")) //Species with head accessories.
|
|
|
|
|
var/input = "Choose the colour of your your character's head accessory:"
|
|
|
|
|
var/new_head_accessory = input(user, input, "Character Preference", rgb(r_headacc, g_headacc, b_headacc)) as color|null
|
|
|
|
|
if(new_head_accessory)
|
|
|
|
@@ -1438,7 +1434,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
|
|
|
|
b_headacc = color2B(new_head_accessory)
|
|
|
|
|
|
|
|
|
|
if("ha_style")
|
|
|
|
|
if(species in list("Unathi", "Vulpkanin", "Tajaran", "Machine")) //Species with head accessories.
|
|
|
|
|
if(species in list("Unathi", "Vulpkanin", "Tajaran", "Machine", "Kidan")) //Species with head accessories.
|
|
|
|
|
var/list/valid_head_accessory_styles = list()
|
|
|
|
|
for(var/head_accessory_style in head_accessory_styles_list)
|
|
|
|
|
var/datum/sprite_accessory/H = head_accessory_styles_list[head_accessory_style]
|
|
|
|
@@ -1609,14 +1605,14 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
|
|
|
|
if("f_style")
|
|
|
|
|
var/list/valid_facial_hairstyles = list()
|
|
|
|
|
for(var/facialhairstyle in facial_hair_styles_list)
|
|
|
|
|
var/datum/sprite_accessory/S = facial_hair_styles_list[facialhairstyle]
|
|
|
|
|
var/datum/sprite_accessory/SA = facial_hair_styles_list[facialhairstyle]
|
|
|
|
|
|
|
|
|
|
if(facialhairstyle == "Shaved") //Just in case.
|
|
|
|
|
valid_facial_hairstyles += facialhairstyle
|
|
|
|
|
continue
|
|
|
|
|
if(gender == MALE && S.gender == FEMALE)
|
|
|
|
|
if(gender == MALE && SA.gender == FEMALE)
|
|
|
|
|
continue
|
|
|
|
|
if(gender == FEMALE && S.gender == MALE)
|
|
|
|
|
if(gender == FEMALE && SA.gender == MALE)
|
|
|
|
|
continue
|
|
|
|
|
if(species == "Machine") //Species that can use prosthetic heads.
|
|
|
|
|
var/head_model
|
|
|
|
@@ -1625,14 +1621,14 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
|
|
|
|
else
|
|
|
|
|
head_model = rlimb_data["head"]
|
|
|
|
|
var/datum/robolimb/robohead = all_robolimbs[head_model]
|
|
|
|
|
if((species in S.species_allowed) && robohead.is_monitor && ((S.models_allowed && (robohead.company in S.models_allowed)) || !S.models_allowed)) //If this is a facial hair style native to the user's species, check to see if they have a head with an ipc-style screen and that the head's company is in the screen style's allowed models list.
|
|
|
|
|
if((species in SA.species_allowed) && robohead.is_monitor && ((SA.models_allowed && (robohead.company in SA.models_allowed)) || !SA.models_allowed)) //If this is a facial hair style native to the user's species, check to see if they have a head with an ipc-style screen and that the head's company is in the screen style's allowed models list.
|
|
|
|
|
valid_facial_hairstyles += facialhairstyle //Give them their facial hairstyles if they do.
|
|
|
|
|
else
|
|
|
|
|
if(!robohead.is_monitor && ("Human" in S.species_allowed)) /*If the facial hairstyle is not native to the user's species and they're using a head with an ipc-style screen, don't let them access it.
|
|
|
|
|
if(!robohead.is_monitor && ("Human" in SA.species_allowed)) /*If the facial hairstyle is not native to the user's species and they're using a head with an ipc-style screen, don't let them access it.
|
|
|
|
|
But if the user has a robotic humanoid head and the facial hairstyle can fit humans, let them use it as a wig. */
|
|
|
|
|
valid_facial_hairstyles += facialhairstyle
|
|
|
|
|
else //If the user is not a species who can have robotic heads, use the default handling.
|
|
|
|
|
if(species in S.species_allowed) //If the user's head is of a species the facial hair style allows, add it to the list.
|
|
|
|
|
if(species in SA.species_allowed) //If the user's head is of a species the facial hair style allows, add it to the list.
|
|
|
|
|
valid_facial_hairstyles += facialhairstyle
|
|
|
|
|
|
|
|
|
|
var/new_f_style = input(user, "Choose your character's facial-hair style:", "Character Preference") as null|anything in valid_facial_hairstyles
|
|
|
|
@@ -1642,12 +1638,12 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
|
|
|
|
if("underwear")
|
|
|
|
|
var/list/valid_underwear = list()
|
|
|
|
|
for(var/underwear in underwear_list)
|
|
|
|
|
var/datum/sprite_accessory/S = underwear_list[underwear]
|
|
|
|
|
if(gender == MALE && S.gender == FEMALE)
|
|
|
|
|
var/datum/sprite_accessory/SA = underwear_list[underwear]
|
|
|
|
|
if(gender == MALE && SA.gender == FEMALE)
|
|
|
|
|
continue
|
|
|
|
|
if(gender == FEMALE && S.gender == MALE)
|
|
|
|
|
if(gender == FEMALE && SA.gender == MALE)
|
|
|
|
|
continue
|
|
|
|
|
if(!(species in S.species_allowed))
|
|
|
|
|
if(!(species in SA.species_allowed))
|
|
|
|
|
continue
|
|
|
|
|
valid_underwear[underwear] = underwear_list[underwear]
|
|
|
|
|
var/new_underwear = input(user, "Choose your character's underwear:", "Character Preference") as null|anything in valid_underwear
|
|
|
|
@@ -1657,12 +1653,12 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
|
|
|
|
if("undershirt")
|
|
|
|
|
var/list/valid_undershirts = list()
|
|
|
|
|
for(var/undershirt in undershirt_list)
|
|
|
|
|
var/datum/sprite_accessory/S = undershirt_list[undershirt]
|
|
|
|
|
if(gender == MALE && S.gender == FEMALE)
|
|
|
|
|
var/datum/sprite_accessory/SA = undershirt_list[undershirt]
|
|
|
|
|
if(gender == MALE && SA.gender == FEMALE)
|
|
|
|
|
continue
|
|
|
|
|
if(gender == FEMALE && S.gender == MALE)
|
|
|
|
|
if(gender == FEMALE && SA.gender == MALE)
|
|
|
|
|
continue
|
|
|
|
|
if(!(species in S.species_allowed))
|
|
|
|
|
if(!(species in SA.species_allowed))
|
|
|
|
|
continue
|
|
|
|
|
valid_undershirts[undershirt] = undershirt_list[undershirt]
|
|
|
|
|
var/new_undershirt = input(user, "Choose your character's undershirt:", "Character Preference") as null|anything in valid_undershirts
|
|
|
|
@@ -1673,12 +1669,12 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
|
|
|
|
if("socks")
|
|
|
|
|
var/list/valid_sockstyles = list()
|
|
|
|
|
for(var/sockstyle in socks_list)
|
|
|
|
|
var/datum/sprite_accessory/S = socks_list[sockstyle]
|
|
|
|
|
if(gender == MALE && S.gender == FEMALE)
|
|
|
|
|
var/datum/sprite_accessory/SA = socks_list[sockstyle]
|
|
|
|
|
if(gender == MALE && SA.gender == FEMALE)
|
|
|
|
|
continue
|
|
|
|
|
if(gender == FEMALE && S.gender == MALE)
|
|
|
|
|
if(gender == FEMALE && SA.gender == MALE)
|
|
|
|
|
continue
|
|
|
|
|
if(!(species in S.species_allowed))
|
|
|
|
|
if(!(species in SA.species_allowed))
|
|
|
|
|
continue
|
|
|
|
|
valid_sockstyles[sockstyle] = socks_list[sockstyle]
|
|
|
|
|
var/new_socks = input(user, "Choose your character's socks:", "Character Preference") as null|anything in valid_sockstyles
|
|
|
|
@@ -1718,9 +1714,9 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
|
|
|
|
ooccolor = new_ooccolor
|
|
|
|
|
|
|
|
|
|
if("bag")
|
|
|
|
|
var/new_backbag = input(user, "Choose your character's style of bag:", "Character Preference") as null|anything in backbaglist
|
|
|
|
|
var/new_backbag = input(user, "Choose your character's style of bag:", "Character Preference") as null|anything in backbaglist
|
|
|
|
|
if(new_backbag)
|
|
|
|
|
backbag = backbaglist.Find(new_backbag)
|
|
|
|
|
backbag = new_backbag
|
|
|
|
|
|
|
|
|
|
if("nt_relation")
|
|
|
|
|
var/new_relation = input(user, "Choose your relation to NT. Note that this represents what others can find out about your character by researching your background, not what your character actually thinks.", "Character Preference") as null|anything in list("Loyal", "Supportive", "Neutral", "Skeptical", "Opposed")
|
|
|
|
@@ -1909,10 +1905,20 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
|
|
|
|
toggles ^= DONATOR_PUBLIC
|
|
|
|
|
|
|
|
|
|
if("gender")
|
|
|
|
|
if(gender == MALE)
|
|
|
|
|
gender = FEMALE
|
|
|
|
|
if(!S.has_gender)
|
|
|
|
|
var/newgender = input(user, "Choose Gender:") as null|anything in list("Male", "Female", "Genderless")
|
|
|
|
|
switch(newgender)
|
|
|
|
|
if("Male")
|
|
|
|
|
gender = MALE
|
|
|
|
|
if("Female")
|
|
|
|
|
gender = FEMALE
|
|
|
|
|
if("Genderless")
|
|
|
|
|
gender = PLURAL
|
|
|
|
|
else
|
|
|
|
|
gender = MALE
|
|
|
|
|
if(gender == MALE)
|
|
|
|
|
gender = FEMALE
|
|
|
|
|
else
|
|
|
|
|
gender = MALE
|
|
|
|
|
underwear = random_underwear(gender)
|
|
|
|
|
|
|
|
|
|
if("hear_adminhelps")
|
|
|
|
@@ -2150,12 +2156,10 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
|
|
|
|
if(body_accessory)
|
|
|
|
|
character.body_accessory = body_accessory_by_name["[body_accessory]"]
|
|
|
|
|
|
|
|
|
|
if(backbag > 4 || backbag < 1)
|
|
|
|
|
backbag = 1 //Same as above
|
|
|
|
|
character.backbag = backbag
|
|
|
|
|
|
|
|
|
|
//Debugging report to track down a bug, which randomly assigned the plural gender to people.
|
|
|
|
|
if(character.gender in list(PLURAL, NEUTER))
|
|
|
|
|
if(S.has_gender && (character.gender in list(PLURAL, NEUTER)))
|
|
|
|
|
if(isliving(src)) //Ghosts get neuter by default
|
|
|
|
|
message_admins("[key_name_admin(character)] has spawned with their gender as plural or neuter. Please notify coders.")
|
|
|
|
|
character.change_gender(MALE)
|
|
|
|
@@ -2224,7 +2228,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
|
|
|
|
|
dat += "<a href='?_src_=prefs;preference=changeslot;num=[i];'>[name]</a><br>"
|
|
|
|
|
|
|
|
|
|
dat += "<hr>"
|
|
|
|
|
dat += "<a href='byond://?src=[user.UID()];preference=close_load_dialog'>Close</a><br>"
|
|
|
|
|
dat += "<a href='byond://?_src_=prefs;preference=close_load_dialog'>Close</a><br>"
|
|
|
|
|
dat += "</center></tt>"
|
|
|
|
|
// user << browse(dat, "window=saves;size=300x390")
|
|
|
|
|
var/datum/browser/popup = new(user, "saves", "<div align='center'>Character Saves</div>", 300, 390)
|
|
|
|
|