-tg- underware overhaul

This commit overhauls the underwear/undershirt system to -tg-'s text-based
version. No more magic numbers, just text states.

Note, this modifies the SQL Schema, and existing databases must be
modified by the following SQL:

ALTER TABLE server_db.characters
	CHANGE underwear underwear MEDIUMTEXT NOT NULL,
	CHANGE undershirt undershirt MEDIUMTEXT NOT NULL;
This commit is contained in:
Tigercat2000
2015-08-13 14:39:29 -07:00
parent 1cce7c87be
commit 748da30bb6
24 changed files with 472 additions and 194 deletions
+32 -33
View File
@@ -30,7 +30,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
num2text(BE_REV) = 14,
num2text(BE_VAMPIRE) = 14,
num2text(BE_BLOB) = 14,
num2text(BE_REVENANT) = 14,
num2text(BE_REVENANT) = 14,
num2text(BE_OPERATIVE) = 21,
num2text(BE_CULTIST) = 21,
num2text(BE_RAIDER) = 21,
@@ -104,8 +104,8 @@ datum/preferences
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/underwear = 1 //underwear type
var/undershirt = 1 //undershirt type
var/underwear = "Nude" //underwear type
var/undershirt = "Nude" //undershirt type
var/backbag = 2 //backpack type
var/h_style = "Bald" //Hair type
var/r_hair = 0 //Hair color
@@ -185,14 +185,17 @@ datum/preferences
var/volume = 100
/datum/preferences/New(client/C)
b_type = pick(4;"O-", 36;"O+", 3;"A-", 28;"A+", 1;"B-", 20;"B+", 1;"AB-", 5;"AB+")
if(istype(C))
if(!IsGuestKey(C.key))
// load_path(C.ckey)
if(load_preferences(C))
if(load_character(C))
return
gender = pick(MALE, FEMALE)
var/loaded_preferences_successfully = load_preferences(C)
if(loaded_preferences_successfully)
if(load_character(C))
return
//we couldn't load character data so just randomize the character appearance + name
random_character() //let's create a random character then - rather than a fat, bald and naked man.
real_name = random_name(gender)
if(!loaded_preferences_successfully)
save_preferences(C)
save_character(C) //let's save this new random character so it doesn't keep generating new ones.
/datum/preferences
proc/ShowChoices(mob/user)
@@ -316,11 +319,8 @@ datum/preferences
dat += "\[...\]<br><br>"
else
dat += "<br><br>"
if(gender == MALE)
dat += "Underwear: <a href ='?_src_=prefs;preference=underwear;task=input'><b>[underwear_m[underwear]]</b></a><br>"
else
dat += "Underwear: <a href ='?_src_=prefs;preference=underwear;task=input'><b>[underwear_f[underwear]]</b></a><br>"
dat += "Undershirt: <a href='?_src_=prefs;preference=undershirt;task=input'><b>[undershirt_t[undershirt]]</b></a><br>"
dat += "<b>Underwear:</b><BR><a href ='?_src_=prefs;preference=underwear;task=input'>[underwear]</a><BR>"
dat += "<b>Undershirt:</b><BR><a href ='?_src_=prefs;preference=undershirt;task=input'>[undershirt]</a><BR>"
dat += "Backpack Type:<br><a href ='?_src_=prefs;preference=bag;task=input'><b>[backbaglist[backbag]]</b></a><br>"
dat += "Nanotrasen Relation:<br><a href ='?_src_=prefs;preference=nt_relation;task=input'><b>[nanotrasen_relation]</b></a><br>"
dat += "</td><td><b>Preview</b><br><img src=previewicon.png height=64 width=64><img src=previewicon2.png height=64 width=64></td></tr></table>"
@@ -984,10 +984,10 @@ datum/preferences
if("f_style")
f_style = random_facial_hair_style(gender, species)
if("underwear")
underwear = rand(1,underwear_m.len)
underwear = random_underwear(gender)
ShowChoices(user)
if("undershirt")
undershirt = rand(1,undershirt_t.len)
undershirt = random_undershirt(gender)
ShowChoices(user)
if("eyes")
r_eyes = rand(0,255)
@@ -1006,7 +1006,7 @@ datum/preferences
/*if("skin_style")
h_style = random_skin_style(gender)*/
if("all")
randomize_appearance_for() //no params needed
random_character()
if("input")
switch(href_list["preference"])
if("name")
@@ -1176,16 +1176,17 @@ datum/preferences
var/new_underwear = input(user, "Choose your character's underwear:", "Character Preference") as null|anything in underwear_options
if(new_underwear)
underwear = underwear_options.Find(new_underwear)
underwear = new_underwear
ShowChoices(user)
if("undershirt")
var/list/undershirt_options
undershirt_options = undershirt_t
var/new_undershirt = input(user, "Choose your character's undershirt:", "Character Preference") as null|anything in undershirt_options
if (new_undershirt)
undershirt = undershirt_options.Find(new_undershirt)
var/new_undershirt
if(gender == MALE)
new_undershirt = input(user, "Choose your character's undershirt:", "Character Preference") as null|anything in undershirt_m
else
new_undershirt = input(user, "Choose your character's undershirt:", "Character Preference") as null|anything in undershirt_f
if(new_undershirt)
undershirt = new_undershirt
ShowChoices(user)
if("eyes")
@@ -1340,7 +1341,7 @@ datum/preferences
gender = FEMALE
else
gender = MALE
underwear = random_underwear(gender)
if("hear_adminhelps")
sound ^= SOUND_ADMINHELP
@@ -1410,7 +1411,10 @@ datum/preferences
close_load_dialog(user)
if("changeslot")
load_character(user,text2num(href_list["num"]))
if(!load_character(user,text2num(href_list["num"])))
random_character()
real_name = random_name(gender)
save_character(user)
close_load_dialog(user)
if("tab")
@@ -1420,7 +1424,7 @@ datum/preferences
ShowChoices(user)
return 1
proc/copy_to(mob/living/carbon/human/character, safety = 0)
proc/copy_to(mob/living/carbon/human/character)
if(be_random_name)
real_name = random_name(gender,species)
@@ -1517,12 +1521,7 @@ datum/preferences
W.buckled_mob = character
W.add_fingerprint(character)
if(underwear > underwear_m.len || underwear < 1)
underwear = 0 //I'm sure this is 100% unnecessary, but I'm paranoid... sue me. //HAH NOW NO MORE MAGIC CLONING UNDIES
character.underwear = underwear
if(undershirt > undershirt_t.len || undershirt < 1)
undershirt = 0
character.undershirt = undershirt
if(backbag > 4 || backbag < 1)
+6 -6
View File
@@ -87,8 +87,8 @@
r_eyes = text2num(query.item[23])
g_eyes = text2num(query.item[24])
b_eyes = text2num(query.item[25])
underwear = text2num(query.item[26])
undershirt = text2num(query.item[27])
underwear = query.item[26]
undershirt = query.item[27]
backbag = text2num(query.item[28])
b_type = query.item[29]
@@ -147,8 +147,8 @@
r_eyes = sanitize_integer(r_eyes, 0, 255, initial(r_eyes))
g_eyes = sanitize_integer(g_eyes, 0, 255, initial(g_eyes))
b_eyes = sanitize_integer(b_eyes, 0, 255, initial(b_eyes))
underwear = sanitize_integer(underwear, 1, underwear_m.len, initial(underwear))
undershirt = sanitize_integer(undershirt, 1, undershirt_t.len, initial(undershirt))
underwear = sanitize_text(underwear, initial(underwear))
undershirt = sanitize_text(undershirt, initial(undershirt))
backbag = sanitize_integer(backbag, 1, backbaglist.len, initial(backbag))
b_type = sanitize_text(b_type, initial(b_type))
@@ -204,7 +204,7 @@
message_admins("SQL ERROR during character slot saving. Error : \[[err]\]\n")
return
return 1
/*
/datum/preferences/proc/random_character(client/C)
var/DBQuery/query = dbcon.NewQuery("SELECT slot FROM characters WHERE ckey='[C.ckey]' ORDER BY slot")
@@ -218,4 +218,4 @@
load_character(C)
return 0
load_character(C,pick(saves))
return 1
return 1*/