Polaris sync

This commit is contained in:
Eearslya
2016-08-06 20:34:44 -07:00
566 changed files with 16223 additions and 7350 deletions

View File

@@ -0,0 +1,3 @@
#define EQUIP_PREVIEW_LOADOUT 1
#define EQUIP_PREVIEW_JOB 2
#define EQUIP_PREVIEW_ALL (EQUIP_PREVIEW_LOADOUT|EQUIP_PREVIEW_JOB)

View File

@@ -29,9 +29,7 @@ datum/preferences/proc/set_biological_gender(var/gender)
S["OOC_Notes"] << pref.metadata
/datum/category_item/player_setup_item/general/basic/sanitize_character()
if(!pref.species) pref.species = "Human"
var/datum/species/S = all_species[pref.species ? pref.species : "Human"]
pref.age = sanitize_integer(pref.age, S.min_age, S.max_age, initial(pref.age))
pref.age = sanitize_integer(pref.age, get_min_age(), get_max_age(), initial(pref.age))
pref.biological_gender = sanitize_inlist(pref.biological_gender, get_genders(), pick(get_genders()))
pref.identifying_gender = (pref.identifying_gender in all_genders_define_list) ? pref.identifying_gender : pref.biological_gender
pref.real_name = sanitize_name(pref.real_name, pref.species)
@@ -75,7 +73,6 @@ datum/preferences/proc/set_biological_gender(var/gender)
. = jointext(.,null)
/datum/category_item/player_setup_item/general/basic/OnTopic(var/href,var/list/href_list, var/mob/user)
var/datum/species/S = all_species[pref.species]
if(href_list["rename"])
var/raw_name = input(user, "Choose your character's name:", "Character Name") as text|null
if (!isnull(raw_name) && CanUseTopic(user))
@@ -108,10 +105,11 @@ datum/preferences/proc/set_biological_gender(var/gender)
return TOPIC_REFRESH
else if(href_list["age"])
if(!pref.species) pref.species = "Human"
var/new_age = input(user, "Choose your character's age:\n([S.min_age]-[S.max_age])", "Character Preference", pref.age) as num|null
var/min_age = get_min_age()
var/max_age = get_max_age()
var/new_age = input(user, "Choose your character's age:\n([min_age]-[max_age])", "Character Preference", pref.age) as num|null
if(new_age && CanUseTopic(user))
pref.age = max(min(round(text2num(new_age)), S.max_age), S.min_age)
pref.age = max(min(round(text2num(new_age)), max_age), min_age)
return TOPIC_REFRESH
else if(href_list["spawnpoint"])

View File

@@ -49,7 +49,7 @@
var/list/available_languages = S.secondary_langs.Copy()
for(var/L in all_languages)
var/datum/language/lang = all_languages[L]
if(!(lang.flags & RESTRICTED) && (!config.usealienwhitelist || is_alien_whitelisted(user, L) || !(lang.flags & WHITELISTED)))
if(!(lang.flags & RESTRICTED) && (is_lang_whitelisted(user, lang)))
available_languages |= L
// make sure we don't let them waste slots on the default languages

View File

@@ -1,7 +1,7 @@
var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O+", "O-")
/datum/preferences
var/dress_mob = TRUE
var/equip_preview_mob = EQUIP_PREVIEW_ALL
/datum/category_item/player_setup_item/general/body
name = "Body"
@@ -226,8 +226,8 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
. += "</td><td><b>Preview</b><br>"
. += "<div class='statusDisplay'><center><img src=previewicon.png width=[pref.preview_icon.Width()] height=[pref.preview_icon.Height()]></center></div>"
. += "<br><a href='?src=\ref[src];toggle_clothing=1'>[pref.dress_mob ? "Hide equipment" : "Show equipment"]</a>"
. += "<br><a href='?src=\ref[src];toggle_preview_value=[EQUIP_PREVIEW_LOADOUT]'>[pref.equip_preview_mob & EQUIP_PREVIEW_LOADOUT ? "Hide loadout" : "Show loadout"]</a>"
. += "<br><a href='?src=\ref[src];toggle_preview_value=[EQUIP_PREVIEW_JOB]'>[pref.equip_preview_mob & EQUIP_PREVIEW_JOB ? "Hide job gear" : "Show job gear"]</a>"
. += "</td></tr></table>"
. += "<b>Hair</b><br>"
@@ -331,8 +331,9 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
reset_limbs() // Safety for species with incompatible manufacturers; easier than trying to do it case by case.
var/datum/species/S = all_species[pref.species]
pref.age = max(min(pref.age, S.max_age), S.min_age)
var/min_age = get_min_age()
var/max_age = get_max_age()
pref.age = max(min(pref.age, max_age), min_age)
return TOPIC_REFRESH_UPDATE_PREVIEW
@@ -578,8 +579,8 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
pref.disabilities ^= disability_flag
return TOPIC_REFRESH_UPDATE_PREVIEW
else if(href_list["toggle_clothing"])
pref.dress_mob = !pref.dress_mob
else if(href_list["toggle_preview_value"])
pref.equip_preview_mob ^= text2num(href_list["toggle_preview_value"])
return TOPIC_REFRESH_UPDATE_PREVIEW
return ..()
@@ -640,11 +641,11 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O
dat += "</table><center><hr/>"
var/restricted = 0
if(config.usealienwhitelist) //If we're using the whitelist, make sure to check it!
if(!(current_species.spawn_flags & SPECIES_CAN_JOIN))
restricted = 2
else if((current_species.spawn_flags & SPECIES_IS_WHITELISTED) && !is_alien_whitelisted(preference_mob(),current_species))
restricted = 1
if(!(current_species.spawn_flags & SPECIES_CAN_JOIN))
restricted = 2
else if(!is_alien_whitelisted(preference_mob(),current_species))
restricted = 1
if(restricted)
if(restricted == 1)

View File

@@ -52,34 +52,38 @@ var/list/gear_datums = list()
S["gear"] << pref.gear
/datum/category_item/player_setup_item/loadout/proc/valid_gear_choices(var/max_cost)
var/list/valid_gear_choices = list()
. = list()
var/mob/preference_mob = preference_mob()
for(var/gear_name in gear_datums)
var/datum/gear/G = gear_datums[gear_name]
if(G.whitelisted && !is_alien_whitelisted(preference_mob(), G.whitelisted))
if(G.whitelisted && !is_alien_whitelisted(preference_mob, all_species[G.whitelisted]))
continue
if(max_cost && G.cost > max_cost)
continue
valid_gear_choices += gear_name
return valid_gear_choices
. += gear_name
/datum/category_item/player_setup_item/loadout/sanitize_character()
var/mob/preference_mob = preference_mob()
if(!islist(pref.gear))
pref.gear = list()
for(var/gear_name in pref.gear)
if(!(gear_name in gear_datums))
pref.gear -= gear_name
var/total_cost = 0
for(var/gear_name in pref.gear)
if(!gear_datums[gear_name])
preference_mob << "<span class='warning'>You cannot have more than one of the \the [gear_name]</span>"
pref.gear -= gear_name
else if(!(gear_name in valid_gear_choices()))
preference_mob << "<span class='warning'>You cannot take \the [gear_name] as you are not whitelisted for the species.</span>"
pref.gear -= gear_name
else
var/datum/gear/G = gear_datums[gear_name]
if(total_cost + G.cost > MAX_GEAR_COST)
pref.gear -= gear_name
preference_mob << "<span class='warning'>You cannot afford to take \the [gear_name]</span>"
else
total_cost += G.cost

View File

@@ -45,6 +45,10 @@
display_name = "holster, hip"
path = /obj/item/clothing/accessory/holster/hip
/datum/gear/accessory/holster/leg
display_name = "holster, leg"
path = /obj/item/clothing/accessory/holster/leg
/datum/gear/accessory/holster/waist
display_name = "holster, waist"
path = /obj/item/clothing/accessory/holster/waist

View File

@@ -31,6 +31,21 @@
path = /obj/item/clothing/head/beret/sec/navy/hos
allowed_roles = list("Head of Security")
/datum/gear/head/beret/csec
display_name = "beret, corporate (officer)"
path = /obj/item/clothing/head/beret/sec/corporate/officer
allowed_roles = list("Security Officer","Head of Security","Warden")
/datum/gear/head/beret/csec_warden
display_name = "beret, corporate (warden)"
path = /obj/item/clothing/head/beret/sec/corporate/warden
allowed_roles = list("Head of Security","Warden")
/datum/gear/head/beret/csec_hos
display_name = "beret, corporate (hos)"
path = /obj/item/clothing/head/beret/sec/corporate/hos
allowed_roles = list("Head of Security")
/datum/gear/head/beret/eng
display_name = "beret, engie-orange"
path = /obj/item/clothing/head/beret/engineering

View File

@@ -54,6 +54,10 @@
display_name = "military jacket, alt"
path = /obj/item/clothing/suit/storage/miljacket/alt
/datum/gear/suit/mil/green
display_name = "military jacket, green"
path = /obj/item/clothing/suit/storage/miljacket/green
/datum/gear/suit/hazard_vest
display_name = "hazard vest"
path = /obj/item/clothing/suit/storage/hazardvest
@@ -176,6 +180,31 @@
path = /obj/item/clothing/suit/wcoat
cost = 1
/datum/gear/suit/wcoat/red
display_name = "red waistcoat"
path = /obj/item/clothing/suit/wcoat/red
/datum/gear/suit/wcoat/grey
display_name = "grey waistcoat"
path = /obj/item/clothing/suit/wcoat/grey
/datum/gear/suit/wcoat/brown
display_name = "brown waistcoat"
path = /obj/item/clothing/suit/wcoat/brown
/datum/gear/suit/swvest
display_name = "black sweatervest"
path = /obj/item/clothing/suit/wcoat/swvest
cost = 1
/datum/gear/suit/swvest/blue
display_name = "blue sweatervest"
path = /obj/item/clothing/suit/wcoat/swvest/blue
/datum/gear/suit/swvest/red
display_name = "red sweatervest"
path = /obj/item/clothing/suit/wcoat/swvest/red
/datum/gear/suit/forensics
display_name = "forensics long, red"
path = /obj/item/clothing/suit/storage/forensics/red/long
@@ -208,7 +237,7 @@
/datum/gear/suit/wintercoat/security
display_name = "winter coat, security"
path = /obj/item/clothing/suit/storage/hooded/wintercoat/security
allowed_roles = list("Security Officer, Head of Security, Warden, Detective")
allowed_roles = list("Security Officer", "Head of Security", "Warden", "Detective")
/datum/gear/suit/wintercoat/medical
display_name = "winter coat, medical"
@@ -267,4 +296,20 @@
for(var/track_style in typesof(/obj/item/clothing/suit/storage/toggle/track))
var/obj/item/clothing/suit/storage/toggle/track/track = track_style
tracks[initial(track.name)] = track
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(tracks))
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(tracks))
/datum/gear/suit/flannel
display_name = "grey flannel"
path = /obj/item/clothing/suit/storage/flannel
/datum/gear/suit/flannel/red
display_name = "red flannel"
path = /obj/item/clothing/suit/storage/flannel/red
/datum/gear/suit/flannel/aqua
display_name = "aqua flannel"
path = /obj/item/clothing/suit/storage/flannel/aqua
/datum/gear/suit/flannel/brown
display_name = "brown flannel"
path = /obj/item/clothing/suit/storage/flannel/brown

View File

@@ -90,12 +90,12 @@
/datum/gear/uniform/job_skirt/ce
display_name = "skirt, ce"
path = /obj/item/clothing/under/rank/engineer/chief_engineer/skirt
path = /obj/item/clothing/under/rank/chief_engineer/skirt
allowed_roles = list("Chief Engineer")
/datum/gear/uniform/job_skirt/atmos
display_name = "skirt, atmos"
path = /obj/item/clothing/under/rank/engineer/atmospheric_technician/skirt
path = /obj/item/clothing/under/rank/atmospheric_technician/skirt
allowed_roles = list("Chief Engineer","Atmospheric Technician")
/datum/gear/uniform/job_skirt/eng
@@ -110,17 +110,17 @@
/datum/gear/uniform/job_skirt/cmo
display_name = "skirt, cmo"
path = /obj/item/clothing/under/rank/medical/chief_medical_officer/skirt
path = /obj/item/clothing/under/rank/chief_medical_officer/skirt
allowed_roles = list("Chief Medical Officer")
/datum/gear/uniform/job_skirt/chem
display_name = "skirt, chemist"
path = /obj/item/clothing/under/rank/medical/chemist/skirt
path = /obj/item/clothing/under/rank/chemist/skirt
allowed_roles = list("Chief Medical Officer","Chemist")
/datum/gear/uniform/job_skirt/viro
display_name = "skirt, virologist"
path = /obj/item/clothing/under/rank/medical/virologist/skirt
path = /obj/item/clothing/under/rank/virologist/skirt
allowed_roles = list("Chief Medical Officer","Medical Doctor")
/datum/gear/uniform/job_skirt/med
@@ -145,7 +145,7 @@
/datum/gear/uniform/job_skirt/warden
display_name = "skirt, warden"
path = /obj/item/clothing/under/rank/security/warden/skirt
path = /obj/item/clothing/under/rank/warden/skirt
allowed_roles = list("Head of Security", "Warden")
/datum/gear/uniform/job_skirt/security
@@ -155,7 +155,7 @@
/datum/gear/uniform/job_skirt/head_of_security
display_name = "skirt, hos"
path = /obj/item/clothing/under/rank/security/head_of_security/skirt
path = /obj/item/clothing/under/rank/head_of_security/skirt
allowed_roles = list("Head of Security")
/datum/gear/uniform/jeans_qm
@@ -325,7 +325,7 @@
allowed_roles = list("Security Officer","Head of Security","Warden")
/datum/gear/uniform/navywarsuit
display_name = "uniform, navy blue (Wardem)"
display_name = "uniform, navy blue (Warden)"
path = /obj/item/clothing/under/rank/warden/navyblue
allowed_roles = list("Head of Security","Warden")

View File

@@ -2,14 +2,12 @@
/datum/gear/suit/zhan_furs
display_name = "Zhan-Khazan furs (Tajara)"
path = /obj/item/clothing/suit/tajaran/furs
whitelisted = "Tajara"
sort_category = "Xenowear"
/datum/gear/suit/unathi_mantle
display_name = "hide mantle (Unathi)"
path = /obj/item/clothing/suit/unathi/mantle
cost = 1
whitelisted = "Unathi"
sort_category = "Xenowear"
/datum/gear/ears/skrell/chains //Chains
@@ -25,7 +23,7 @@
var/obj/item/clothing/ears/skrell/chain/chain = chain_style
chaintypes[initial(chain.name)] = chain
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(chaintypes))
/datum/gear/ears/skrell/bands
display_name = "headtail band selection (Skrell)"
path = /obj/item/clothing/ears/skrell/band
@@ -39,7 +37,7 @@
var/obj/item/clothing/ears/skrell/band/band = band_style
bandtypes[initial(band.name)] = band
gear_tweaks += new/datum/gear_tweak/path(sortAssoc(bandtypes))
/datum/gear/ears/skrell/cloth/male
display_name = "male headtail cloth selection (Skrell)"
path = /obj/item/clothing/ears/skrell/cloth_male
@@ -73,17 +71,17 @@
path = /obj/item/clothing/ears/skrell/colored/band
sort_category = "Xenowear"
whitelisted = "Skrell"
/datum/gear/ears/skrell/colored/band/New()
..()
gear_tweaks = list(gear_tweak_free_color_choice)
/datum/gear/ears/skrell/colored/chain
display_name = "Colored chain (Skrell)"
path = /obj/item/clothing/ears/skrell/colored/chain
sort_category = "Xenowear"
whitelisted = "Skrell"
/datum/gear/ears/skrell/colored/chain/New()
..()
gear_tweaks = list(gear_tweak_free_color_choice)

View File

@@ -160,10 +160,10 @@
var/choice = input("Choose an title for [job.title].", "Choose Title", pref.GetPlayerAltTitle(job)) as anything in choices|null
if(choice && CanUseTopic(user))
SetPlayerAltTitle(job, choice)
return (pref.dress_mob ? TOPIC_REFRESH_UPDATE_PREVIEW : TOPIC_REFRESH)
return (pref.equip_preview_mob ? TOPIC_REFRESH_UPDATE_PREVIEW : TOPIC_REFRESH)
else if(href_list["set_job"])
if(SetJob(user, href_list["set_job"])) return (pref.dress_mob ? TOPIC_REFRESH_UPDATE_PREVIEW : TOPIC_REFRESH)
if(SetJob(user, href_list["set_job"])) return (pref.equip_preview_mob ? TOPIC_REFRESH_UPDATE_PREVIEW : TOPIC_REFRESH)
return ..()

View File

@@ -4,6 +4,10 @@
#define TOPIC_UPDATE_PREVIEW 4
#define TOPIC_REFRESH_UPDATE_PREVIEW (TOPIC_REFRESH|TOPIC_UPDATE_PREVIEW)
#define PREF_FBP_CYBORG "cyborg"
#define PREF_FBP_POSI "posi"
#define PREF_FBP_SOFTWARE "software"
/datum/category_group/player_setup_category/general_preferences
name = "General"
sort_order = 1
@@ -125,8 +129,6 @@
// Need due to, for example, the 01_basic module relying on species having been loaded to sanitize correctly but that isn't loaded until module 03_body.
for(var/datum/category_item/player_setup_item/PI in items)
PI.load_character(S)
for(var/datum/category_item/player_setup_item/PI in items)
PI.sanitize_character()
/datum/category_group/player_setup_category/proc/save_character(var/savefile/S)
// Sanitize all data, then save it
@@ -138,8 +140,6 @@
/datum/category_group/player_setup_category/proc/load_preferences(var/savefile/S)
for(var/datum/category_item/player_setup_item/PI in items)
PI.load_preferences(S)
for(var/datum/category_item/player_setup_item/PI in items)
PI.sanitize_preferences()
/datum/category_group/player_setup_category/proc/save_preferences(var/savefile/S)
for(var/datum/category_item/player_setup_item/PI in items)
@@ -252,3 +252,50 @@
if(pref.client)
return pref.client.mob
// Checks in a really hacky way if a character's preferences say they are an FBP or not.
/datum/category_item/player_setup_item/proc/is_FBP()
if(pref.organ_data && pref.organ_data[BP_TORSO] != "cyborg")
return 0
return 1
// Returns what kind of FBP the player's prefs are. Returns 0 if they're not an FBP.
/datum/category_item/player_setup_item/proc/get_FBP_type()
if(!is_FBP())
return 0 // Not a robot.
switch(pref.organ_data["brain"])
if("assisted")
return PREF_FBP_CYBORG
if("mechanical")
return PREF_FBP_POSI
if("digital")
return PREF_FBP_SOFTWARE
return 0 //Something went wrong!
/datum/category_item/player_setup_item/proc/get_min_age()
var/datum/species/S = all_species[pref.species ? pref.species : "Human"]
if(!is_FBP())
return S.min_age // If they're not a robot, we can just use the species var.
var/FBP_type = get_FBP_type()
switch(FBP_type)
if(PREF_FBP_CYBORG)
return S.min_age
if(PREF_FBP_POSI)
return 1
if(PREF_FBP_SOFTWARE)
return 1
return S.min_age // welp
/datum/category_item/player_setup_item/proc/get_max_age()
var/datum/species/S = all_species[pref.species ? pref.species : "Human"]
if(!is_FBP())
return S.max_age // If they're not a robot, we can just use the species var.
var/FBP_type = get_FBP_type()
switch(FBP_type)
if(PREF_FBP_CYBORG)
return S.max_age + 20
if(PREF_FBP_POSI)
return 220
if(PREF_FBP_SOFTWARE)
return 150
return S.max_age // welp