Merge branch 'master' into make_paradise_great_again

This commit is contained in:
Crazy Lemon
2017-04-21 11:32:47 -07:00
committed by GitHub
1197 changed files with 35182 additions and 17486 deletions
+23
View File
@@ -225,6 +225,29 @@ proc/getFilesSlow(var/client/client, var/list/files, var/register_asset = TRUE)
"boardui.js" = 'html/browser/boardui.js'
)
/datum/asset/simple/headers
assets = list(
"alarm_green.gif" = 'icons/program_icons/alarm_green.gif',
"alarm_red.gif" = 'icons/program_icons/alarm_red.gif',
"batt_5.gif" = 'icons/program_icons/batt_5.gif',
"batt_20.gif" = 'icons/program_icons/batt_20.gif',
"batt_40.gif" = 'icons/program_icons/batt_40.gif',
"batt_60.gif" = 'icons/program_icons/batt_60.gif',
"batt_80.gif" = 'icons/program_icons/batt_80.gif',
"batt_100.gif" = 'icons/program_icons/batt_100.gif',
"charging.gif" = 'icons/program_icons/charging.gif',
"downloader_finished.gif" = 'icons/program_icons/downloader_finished.gif',
"downloader_running.gif" = 'icons/program_icons/downloader_running.gif',
"ntnrc_idle.gif" = 'icons/program_icons/ntnrc_idle.gif',
"ntnrc_new.gif" = 'icons/program_icons/ntnrc_new.gif',
"power_norm.gif" = 'icons/program_icons/power_norm.gif',
"power_warn.gif" = 'icons/program_icons/power_warn.gif',
"sig_high.gif" = 'icons/program_icons/sig_high.gif',
"sig_low.gif" = 'icons/program_icons/sig_low.gif',
"sig_lan.gif" = 'icons/program_icons/sig_lan.gif',
"sig_none.gif" = 'icons/program_icons/sig_none.gif',
)
/datum/asset/nanoui
var/list/common = list()
+29 -1
View File
@@ -111,6 +111,8 @@
to_chat(usr, "You do not have enough karma!")
return
else
if(alert("Are you sure you want to unlock Barber?", "Confirmation", "No", "Yes") != "Yes")
return
DB_job_unlock("Barber",5)
return
if("2")
@@ -118,6 +120,8 @@
to_chat(usr, "You do not have enough karma!")
return
else
if(alert("Are you sure you want to unlock Brig Physician?", "Confirmation", "No", "Yes") != "Yes")
return
DB_job_unlock("Brig Physician",5)
return
if("3")
@@ -125,6 +129,8 @@
to_chat(usr, "You do not have enough karma!")
return
else
if(alert("Are you sure you want to unlock Nanotrasen Representative?", "Confirmation", "No", "Yes") != "Yes")
return
DB_job_unlock("Nanotrasen Representative",30)
return
if("5")
@@ -132,6 +138,8 @@
to_chat(usr, "You do not have enough karma!")
return
else
if(alert("Are you sure you want to unlock Blueshield?", "Confirmation", "No", "Yes") != "Yes")
return
DB_job_unlock("Blueshield",30)
return
if("6")
@@ -139,6 +147,8 @@
to_chat(usr, "You do not have enough karma!")
return
else
if(alert("Are you sure you want to unlock Mechanic?", "Confirmation", "No", "Yes") != "Yes")
return
DB_job_unlock("Mechanic",30)
return
if("7")
@@ -146,6 +156,8 @@
to_chat(usr, "You do not have enough karma!")
return
else
if(alert("Are you sure you want to unlock Magistrate?", "Confirmation", "No", "Yes") != "Yes")
return
DB_job_unlock("Magistrate",45)
return
if("9")
@@ -153,6 +165,8 @@
to_chat(usr, "You do not have enough karma!")
return
else
if(alert("Are you sure you want to unlock Security Pod Pilot?", "Confirmation", "No", "Yes") != "Yes")
return
DB_job_unlock("Security Pod Pilot",30)
return
if(href_list["KarmaBuy2"])
@@ -163,6 +177,8 @@
to_chat(usr, "You do not have enough karma!")
return
else
if(alert("Are you sure you want to unlock Machine People?", "Confirmation", "No", "Yes") != "Yes")
return
DB_species_unlock("Machine",15)
return
if("2")
@@ -170,6 +186,8 @@
to_chat(usr, "You do not have enough karma!")
return
else
if(alert("Are you sure you want to unlock Kidan?", "Confirmation", "No", "Yes") != "Yes")
return
DB_species_unlock("Kidan",30)
return
if("3")
@@ -177,6 +195,8 @@
to_chat(usr, "You do not have enough karma!")
return
else
if(alert("Are you sure you want to unlock Grey?", "Confirmation", "No", "Yes") != "Yes")
return
DB_species_unlock("Grey",30)
return
if("4")
@@ -184,6 +204,8 @@
to_chat(usr, "You do not have enough karma!")
return
else
if(alert("Are you sure you want to unlock Vox?", "Confirmation", "No", "Yes") != "Yes")
return
DB_species_unlock("Vox",45)
return
if("5")
@@ -191,6 +213,8 @@
to_chat(usr, "You do not have enough karma!")
return
else
if(alert("Are you sure you want to unlock Slime People?", "Confirmation", "No", "Yes") != "Yes")
return
DB_species_unlock("Slime People",45)
return
if("6")
@@ -198,6 +222,8 @@
to_chat(usr, "You do not have enough karma!")
return
else
if(alert("Are you sure you want to unlock Plasmaman?", "Confirmation", "No", "Yes") != "Yes")
return
DB_species_unlock("Plasmaman",100)
return
if("7")
@@ -205,6 +231,8 @@
to_chat(usr, "You do not have enough karma!")
return
else
if(alert("Are you sure you want to unlock Drask?", "Confirmation", "No", "Yes") != "Yes")
return
DB_species_unlock("Drask",30)
return
if(href_list["KarmaRefund"])
@@ -367,7 +395,7 @@
preload_rsc = pick(config.resource_urls)
else preload_rsc = 1 // If config.resource_urls is not set, preload like normal.
to_chat(src, "\red If the title screen is black, resources are still downloading. Please be patient until the title screen appears.")
to_chat(src, "<span class='warning'>If the title screen is black, resources are still downloading. Please be patient until the title screen appears.</span>")
clients += src
@@ -118,6 +118,11 @@
path = /obj/item/clothing/head/beret/sci
allowed_roles = list("Research Director", "Scientist")
/datum/gear/hat/med_beret
display_name = "medical beret"
path = /obj/item/clothing/head/beret/med
allowed_roles = list("Chief Medical Officer", "Medical Doctor" , "Virologist", "Brig Physician")
/datum/gear/hat/surgicalcap_purple
display_name = "surgical cap, purple"
path = /obj/item/clothing/head/surgery/purple
@@ -7,6 +7,14 @@
display_name = "sandals, wooden"
path = /obj/item/clothing/shoes/sandal
/datum/gear/shoes/winterboots
display_name = "winter boots"
path = /obj/item/clothing/shoes/winterboots
/datum/gear/shoes/workboots
display_name = "work boots"
path = /obj/item/clothing/shoes/workboots
/datum/gear/shoes/fancysandals
display_name = "sandals, fancy"
cost = 5
@@ -36,7 +36,7 @@
/datum/gear/uniform/skirt/job/atmos
display_name = "skirt, atmos"
path = /obj/item/clothing/under/rank/atmospheric_technician/skirt
allowed_roles = list("Chief Engineer","Atmospheric Technician")
allowed_roles = list("Chief Engineer","Life Support Specialist")
/datum/gear/uniform/skirt/job/eng
display_name = "skirt, engineer"
@@ -50,7 +50,7 @@
/datum/gear/uniform/skirt/job/cmo
display_name = "skirt, cmo"
path = /obj/item/clothing/under/rank/chief_medical_officer
path = /obj/item/clothing/under/rank/chief_medical_officer/skirt
allowed_roles = list("Chief Medical Officer")
/datum/gear/uniform/skirt/job/chem
+81 -77
View File
@@ -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'>(&reg;)</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)
@@ -224,7 +224,7 @@
b_eyes = text2num(query.item[35])
underwear = query.item[36]
undershirt = query.item[37]
backbag = text2num(query.item[38])
backbag = query.item[38]
b_type = query.item[39]
@@ -270,6 +270,7 @@
gear = params2list(query.item[65])
//Sanitize
var/datum/species/SP = all_species[species]
metadata = sanitize_text(metadata, initial(metadata))
real_name = reject_bad_name(real_name, 1)
if(isnull(species)) species = "Human"
@@ -278,7 +279,7 @@
if(isnull(speciesprefs)) speciesprefs = initial(speciesprefs)
if(!real_name) real_name = random_name(gender,species)
be_random_name = sanitize_integer(be_random_name, 0, 1, initial(be_random_name))
gender = sanitize_gender(gender)
gender = sanitize_gender(gender, FALSE, !SP.has_gender)
age = sanitize_integer(age, AGE_MIN, AGE_MAX, initial(age))
r_hair = sanitize_integer(r_hair, 0, 255, initial(r_hair))
g_hair = sanitize_integer(g_hair, 0, 255, initial(g_hair))
@@ -312,7 +313,7 @@
b_eyes = sanitize_integer(b_eyes, 0, 255, initial(b_eyes))
underwear = sanitize_text(underwear, initial(underwear))
undershirt = sanitize_text(undershirt, initial(undershirt))
backbag = sanitize_integer(backbag, 1, backbaglist.len, initial(backbag))
backbag = sanitize_text(backbag, initial(backbag))
b_type = sanitize_text(b_type, initial(b_type))
alternate_option = sanitize_integer(alternate_option, 0, 2, initial(alternate_option))
@@ -36,8 +36,8 @@
to_chat(usr, "You will [(prefs.toggles & CHAT_RADIO) ? "now" : "no longer"] see radio chatter from radios or speakers")
feedback_add_details("admin_verb","THR") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/verb/toggleadminhelpsound()
set name = "Hear/Silence Adminhelps"
/client/proc/toggleadminhelpsound()
set name = "Hear/Silence Admin Bwoinks"
set category = "Preferences"
set desc = "Toggle hearing a notification when admin PMs are recieved"
if(!holder) return