//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:33 var/list/preferences_datums = list() datum/preferences //doohickeys for savefiles var/path var/default_slot = 1 //Holder so it doesn't default to slot 1, rather the last one used var/savefile_version = 0 //non-preference stuff var/warns = 0 var/muted = 0 var/last_ip var/last_id //game-preferences var/lastchangelog = "" //Saved changlog filesize to detect if there was a change var/ooccolor = "#010000" //Whatever this is set to acts as 'reset' color and is thus unusable as an actual custom color var/be_special = 0 //Special role selection var/UI_style = "Midnight" var/UI_style_color = "#ffffff" var/UI_style_alpha = 255 //character preferences var/real_name //our character's name var/be_random_name = 0 //whether we are a random name every round var/age = 30 //age of character var/spawnpoint = "Arrivals Shuttle" //where this character will spawn (0-2). var/b_type = "A+" //blood type (not-chooseable) var/backbag = 2 //backpack type var/pdachoice = 1 //PDA type var/h_style = "Bald" //Hair type var/r_hair = 0 //Hair color var/g_hair = 0 //Hair color var/b_hair = 0 //Hair color var/f_style = "Shaved" //Face hair type var/r_facial = 0 //Face hair color var/g_facial = 0 //Face hair color var/b_facial = 0 //Face hair color var/s_tone = 0 //Skin tone var/r_skin = 0 //Skin color var/g_skin = 0 //Skin color var/b_skin = 0 //Skin color var/r_eyes = 0 //Eye color var/g_eyes = 0 //Eye color var/b_eyes = 0 //Eye color var/species = "Human" //Species datum to use. var/species_preview //Used for the species selection window. var/list/alternate_languages = list() //Secondary language(s) var/list/language_prefixes = list() //Kanguage prefix keys var/list/gear //Custom/fluff item loadout. //Some faction information. var/home_system = "Unset" //System of birth. var/citizenship = "None" //Current home system. var/faction = "None" //Antag faction/general associated faction. var/religion = "None" //Religious association. //Mob preview var/icon/preview_icon = null //Jobs, uses bitflags var/job_civilian_high = 0 var/job_civilian_med = 0 var/job_civilian_low = 0 var/job_medsci_high = 0 var/job_medsci_med = 0 var/job_medsci_low = 0 var/job_engsec_high = 0 var/job_engsec_med = 0 var/job_engsec_low = 0 //Keeps track of preferrence for not getting any wanted jobs var/alternate_option = 0 var/used_skillpoints = 0 var/skill_specialization = null var/list/skills = list() // skills can range from 0 to 3 // maps each organ to either null(intact), "cyborg" or "amputated" // will probably not be able to do this for head and torso ;) var/list/organ_data = list() var/list/rlimb_data = list() var/list/player_alt_titles = new() // the default name of a job like "Medical Doctor" var/list/flavor_texts = list() var/list/flavour_texts_robot = list() var/med_record = "" var/sec_record = "" var/gen_record = "" var/exploit_record = "" var/disabilities = 0 var/nanotrasen_relation = "Neutral" var/uplinklocation = "PDA" // OOC Metadata: var/metadata = "" var/list/ignored_players = list() var/client/client = null var/client_ckey = null // Communicator identity data var/communicator_visibility = 0 var/datum/category_collection/player_setup_collection/player_setup var/datum/browser/panel /datum/preferences/New(client/C) player_setup = new(src) set_biological_gender(pick(MALE, FEMALE)) real_name = random_name(identifying_gender,species) b_type = RANDOM_BLOOD_TYPE gear = list() if(istype(C)) client = C client_ckey = C.ckey if(!IsGuestKey(C.key)) load_path(C.ckey) if(load_preferences()) if(load_character()) return /datum/preferences/proc/ZeroSkills(var/forced = 0) for(var/V in SKILLS) for(var/datum/skill/S in SKILLS[V]) if(!skills.Find(S.ID) || forced) skills[S.ID] = SKILL_NONE /datum/preferences/proc/CalculateSkillPoints() used_skillpoints = 0 for(var/V in SKILLS) for(var/datum/skill/S in SKILLS[V]) var/multiplier = 1 switch(skills[S.ID]) if(SKILL_NONE) used_skillpoints += 0 * multiplier if(SKILL_BASIC) used_skillpoints += 1 * multiplier if(SKILL_ADEPT) // secondary skills cost less if(S.secondary) used_skillpoints += 1 * multiplier else used_skillpoints += 3 * multiplier if(SKILL_EXPERT) // secondary skills cost less if(S.secondary) used_skillpoints += 3 * multiplier else used_skillpoints += 6 * multiplier /datum/preferences/proc/GetSkillClass(points) return CalculateSkillClass(points, age) /proc/CalculateSkillClass(points, age) if(points <= 0) return "Unconfigured" // skill classes describe how your character compares in total points points -= min(round((age - 20) / 2.5), 4) // every 2.5 years after 20, one extra skillpoint if(age > 30) points -= round((age - 30) / 5) // every 5 years after 30, one extra skillpoint switch(points) if(-1000 to 3) return "Terrifying" if(4 to 6) return "Below Average" if(7 to 10) return "Average" if(11 to 14) return "Above Average" if(15 to 18) return "Exceptional" if(19 to 24) return "Genius" if(24 to 1000) return "God" /datum/preferences/proc/ShowChoices(mob/user) if(!user || !user.client) return if(!get_mob_by_key(client_ckey)) user << "No mob exists for the given client!" close_load_dialog(user) return var/dat = "
" if(path) dat += "Slot - " dat += "Load slot - " dat += "Save slot - " dat += "Reload slot" else dat += "Please create an account to save your preferences." dat += "
" dat += player_setup.header() dat += "

" dat += player_setup.content(user) dat += "" //user << browse(dat, "window=preferences;size=635x736") var/datum/browser/popup = new(user, "Character Setup","Character Setup", 800, 800, src) popup.set_content(dat) popup.open() /datum/preferences/proc/process_link(mob/user, list/href_list) if(!user) return if(!istype(user, /mob/new_player)) return if(href_list["preference"] == "open_whitelist_forum") if(config.forumurl) user << link(config.forumurl) else user << "The forum URL is not set in the server configuration." return ShowChoices(usr) return 1 /datum/preferences/Topic(href, list/href_list) if(..()) return 1 if(href_list["save"]) save_preferences() save_character() else if(href_list["reload"]) load_preferences() load_character() else if(href_list["load"]) if(!IsGuestKey(usr.key)) open_load_dialog(usr) return 1 else if(href_list["changeslot"]) load_character(text2num(href_list["changeslot"])) close_load_dialog(usr) else return 0 ShowChoices(usr) return 1 /datum/preferences/proc/copy_to(mob/living/carbon/human/character, icon_updates = 1) // Sanitizing rather than saving as someone might still be editing when copy_to occurs. player_setup.sanitize_setup() // VOREStation Edit - Start player_setup.copy_to_mob(character) // VOREStation Edit - End character.set_species(species) if(be_random_name) real_name = random_name(identifying_gender,species) if(config.humans_need_surnames) var/firstspace = findtext(real_name, " ") var/name_length = length(real_name) if(!firstspace) //we need a surname real_name += " [pick(last_names)]" else if(firstspace == name_length) real_name += "[pick(last_names)]" character.real_name = real_name character.name = character.real_name if(character.dna) character.dna.real_name = character.real_name character.flavor_texts["general"] = flavor_texts["general"] character.flavor_texts["head"] = flavor_texts["head"] character.flavor_texts["face"] = flavor_texts["face"] character.flavor_texts["eyes"] = flavor_texts["eyes"] character.flavor_texts["torso"] = flavor_texts["torso"] character.flavor_texts["arms"] = flavor_texts["arms"] character.flavor_texts["hands"] = flavor_texts["hands"] character.flavor_texts["legs"] = flavor_texts["legs"] character.flavor_texts["feet"] = flavor_texts["feet"] character.med_record = med_record character.sec_record = sec_record character.gen_record = gen_record character.exploit_record = exploit_record character.gender = biological_gender character.identifying_gender = identifying_gender character.age = age character.b_type = b_type character.r_eyes = r_eyes character.g_eyes = g_eyes character.b_eyes = b_eyes character.h_style = h_style character.r_hair = r_hair character.g_hair = g_hair character.b_hair = b_hair character.f_style = f_style character.r_facial = r_facial character.g_facial = g_facial character.b_facial = b_facial character.r_skin = r_skin character.g_skin = g_skin character.b_skin = b_skin character.s_tone = s_tone character.h_style = h_style character.f_style = f_style character.home_system = home_system character.citizenship = citizenship character.personal_faction = faction character.religion = religion character.skills = skills character.used_skillpoints = used_skillpoints // Destroy/cyborgize organs and limbs. for(var/name in list(BP_HEAD, BP_L_HAND, BP_R_HAND, BP_L_ARM, BP_R_ARM, BP_L_FOOT, BP_R_FOOT, BP_L_LEG, BP_R_LEG, BP_GROIN, BP_TORSO)) var/status = organ_data[name] var/obj/item/organ/external/O = character.organs_by_name[name] if(O) if(status == "amputated") O.remove_rejuv() else if(status == "cyborg") if(rlimb_data[name]) O.robotize(rlimb_data[name]) else O.robotize() for(var/name in list(O_HEART,O_EYES,O_BRAIN)) var/status = organ_data[name] if(!status) continue var/obj/item/organ/I = character.internal_organs_by_name[name] if(I) if(status == "assisted") I.mechassist() else if(status == "mechanical") I.robotize() character.all_underwear.Cut() for(var/underwear_category_name in all_underwear) var/underwear_item_name = all_underwear[underwear_category_name] var/datum/category_group/underwear/underwear_category = global_underwear.categories_by_name[underwear_category_name] character.all_underwear[underwear_category_name] = underwear_category.items_by_name[underwear_item_name] if(backbag > 4 || backbag < 1) backbag = 1 //Same as above character.backbag = backbag if(pdachoice > 3 || pdachoice < 1) pdachoice = 1 character.pdachoice = pdachoice if(icon_updates) character.force_update_limbs() character.update_mutations(0) character.update_body(0) character.update_hair(0) character.update_icons() /datum/preferences/proc/open_load_dialog(mob/user) var/dat = "" dat += "
" var/savefile/S = new /savefile(path) if(S) dat += "Select a character slot to load
" var/name for(var/i=1, i<= config.character_slots, i++) S.cd = "/character[i]" S["real_name"] >> name if(!name) name = "Character[i]" if(i==default_slot) name = "[name]" dat += "[name]
" dat += "
" dat += "
" //user << browse(dat, "window=saves;size=300x390") panel = new(user, "Character Slots", "Character Slots", 300, 390, src) panel.set_content(dat) panel.open() /datum/preferences/proc/close_load_dialog(mob/user) //user << browse(null, "window=saves") panel.close()