mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-14 08:34:16 +01:00
-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:
@@ -50,8 +50,8 @@ CREATE TABLE `characters` (
|
||||
`eyes_red` smallint(4) NOT NULL,
|
||||
`eyes_green` smallint(4) NOT NULL,
|
||||
`eyes_blue` smallint(4) NOT NULL,
|
||||
`underwear` smallint(4) NOT NULL,
|
||||
`undershirt` smallint(4) NOT NULL,
|
||||
`underwear` mediumtext NOT NULL,
|
||||
`undershirt` mediumtext NOT NULL,
|
||||
`backbag` smallint(4) NOT NULL,
|
||||
`b_type` varchar(45) NOT NULL,
|
||||
`alternate_option` smallint(4) NOT NULL,
|
||||
|
||||
@@ -4,32 +4,16 @@
|
||||
//////////////////////////
|
||||
|
||||
/proc/makeDatumRefLists()
|
||||
//hair
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/hair, hair_styles_list, hair_styles_male_list, hair_styles_female_list)
|
||||
//facial hair
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/facial_hair, facial_hair_styles_list, facial_hair_styles_male_list, facial_hair_styles_female_list)
|
||||
//underwear
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/underwear, underwear_list, underwear_m, underwear_f)
|
||||
//undershirt
|
||||
init_sprite_accessory_subtypes(/datum/sprite_accessory/undershirt, undershirt_list, undershirt_m, undershirt_f)
|
||||
|
||||
var/list/paths
|
||||
|
||||
//Hair - Initialise all /datum/sprite_accessory/hair into an list indexed by hair-style name
|
||||
paths = subtypesof(/datum/sprite_accessory/hair)
|
||||
for(var/path in paths)
|
||||
var/datum/sprite_accessory/hair/H = new path()
|
||||
hair_styles_list[H.name] = H
|
||||
switch(H.gender)
|
||||
if(MALE) hair_styles_male_list += H.name
|
||||
if(FEMALE) hair_styles_female_list += H.name
|
||||
else
|
||||
hair_styles_male_list += H.name
|
||||
hair_styles_female_list += H.name
|
||||
|
||||
//Facial Hair - Initialise all /datum/sprite_accessory/facial_hair into an list indexed by facialhair-style name
|
||||
paths = subtypesof(/datum/sprite_accessory/facial_hair)
|
||||
for(var/path in paths)
|
||||
var/datum/sprite_accessory/facial_hair/H = new path()
|
||||
facial_hair_styles_list[H.name] = H
|
||||
switch(H.gender)
|
||||
if(MALE) facial_hair_styles_male_list += H.name
|
||||
if(FEMALE) facial_hair_styles_female_list += H.name
|
||||
else
|
||||
facial_hair_styles_male_list += H.name
|
||||
facial_hair_styles_female_list += H.name
|
||||
|
||||
//Surgery Steps - Initialize all /datum/surgery_step into a list
|
||||
paths = subtypesof(/datum/surgery_step)
|
||||
for(var/T in paths)
|
||||
|
||||
+14
-2
@@ -1,4 +1,16 @@
|
||||
proc/random_hair_style(gender, species = "Human")
|
||||
/proc/random_underwear(var/gender)
|
||||
switch(gender)
|
||||
if(MALE) return pick(underwear_m)
|
||||
if(FEMALE) return pick(underwear_f)
|
||||
else return pick(underwear_list)
|
||||
|
||||
/proc/random_undershirt(var/gender)
|
||||
switch(gender)
|
||||
if(MALE) return pick(undershirt_m)
|
||||
if(FEMALE) return pick(undershirt_f)
|
||||
else return pick(undershirt_list)
|
||||
|
||||
proc/random_hair_style(var/gender, species = "Human")
|
||||
var/h_style = "Bald"
|
||||
|
||||
var/list/valid_hairstyles = list()
|
||||
@@ -29,7 +41,7 @@ proc/random_hair_style(gender, species = "Human")
|
||||
if(SOUTHEAST) return NORTHWEST
|
||||
return 0
|
||||
|
||||
proc/random_facial_hair_style(gender, species = "Human")
|
||||
proc/random_facial_hair_style(var/gender, species = "Human")
|
||||
var/f_style = "Shaved"
|
||||
|
||||
var/list/valid_facialhairstyles = list()
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
/proc/sanitize_inlist(value, list/List, default)
|
||||
if(value in List) return value
|
||||
if(default) return default
|
||||
if(List && List.len)return List[1]
|
||||
if(List && List.len)return pick(List)
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -8,12 +8,13 @@ var/global/list/facial_hair_styles_male_list = list()
|
||||
var/global/list/facial_hair_styles_female_list = list()
|
||||
var/global/list/skin_styles_female_list = list() //unused
|
||||
//Underwear
|
||||
var/global/list/underwear_m = list("White", "Grey", "Green", "Blue", "Black", "Mankini", "None")
|
||||
var/global/list/underwear_f = list("Red", "White", "Yellow", "Blue", "Black", "Thong", "None")
|
||||
var/global/list/underwear_list = underwear_m + underwear_f
|
||||
//undershirt
|
||||
var/global/list/undershirt_t = list("White Shirt", "White Tank top", "Black shirt", "Black Tank top", "Grey Shirt", "Grey tank top", "Lover Shirt", "Blue Ian Shirt", "UK Shirt","I Love NT Shirt", "Peace Shirt", "Band Shirt", "PogoMan Shirt", "Matroska Shirt", "White Short-sleeved shirt", "Purple Short-sleeved shirt", "Blue Short-sleeved shirt", "Green Short-sleeved shirt", "Black Short-Sleeved shirt", "Blue T-Shirt", "Red T-Shirt", "Yellow T-Shirt", "Green T-Shirt", "Blue Polo Shirt", "Red Polo Shirt", "White Polo Shirt", "Gray-Yellow Polo Shirt", "Green Sports Shirt", "Red Sports Shirt", "Blue Sports Shirt", "SS13 Shirt", "Fire Tank Top", "Question Shirt", "Skull Shirt", "Commie Shirt", "Nanotrasen Shirt", "Striped Shirt", "Blue Shirt", "Red Shirt", "Green Shirt", "Meat Shirt", "Tie-Dye Shirt", "Red Jersey", "Blue Jersey", "None")
|
||||
var/global/list/undershirt_list = undershirt_t
|
||||
var/global/list/underwear_list = list() //stores /datum/sprite_accessory/underwear indexed by name
|
||||
var/global/list/underwear_m = list() //stores only underwear name
|
||||
var/global/list/underwear_f = list() //stores only underwear name
|
||||
//Undershirts
|
||||
var/global/list/undershirt_list = list() //stores /datum/sprite_accessory/undershirt indexed by name
|
||||
var/global/list/undershirt_m = list() //stores only undershirt name
|
||||
var/global/list/undershirt_f = list() //stores only undershirt name
|
||||
//Backpacks
|
||||
var/global/list/backbaglist = list("Nothing", "Backpack", "Satchel", "Satchel Alt")
|
||||
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
//Hair
|
||||
var/hair = 0
|
||||
if(!character.h_style)
|
||||
character.h_style = "Bald"
|
||||
character.h_style = random_hair_style(character.gender)
|
||||
|
||||
var/hrange = round(4095 / hair_styles_list.len)
|
||||
var/index = hair_styles_list.Find(character.h_style)
|
||||
@@ -84,7 +84,7 @@
|
||||
//Facial Hair
|
||||
var/beard = 0
|
||||
if(!character.f_style)
|
||||
character.f_style = "Shaved"
|
||||
character.f_style = random_facial_hair_style(character.gender)
|
||||
|
||||
var/f_hrange = round(4095 / facial_hair_styles_list.len)
|
||||
index = facial_hair_styles_list.Find(character.f_style)
|
||||
|
||||
@@ -293,8 +293,7 @@ datum/game_mode/nations
|
||||
else
|
||||
new_character.gender = pick(MALE,FEMALE)
|
||||
var/datum/preferences/A = new()
|
||||
A.randomize_appearance_for(new_character)
|
||||
new_character.real_name = real_name
|
||||
A.copy_to(new_character)
|
||||
|
||||
if(!new_character.real_name)
|
||||
if(new_character.gender == MALE)
|
||||
|
||||
@@ -198,7 +198,8 @@
|
||||
if(M.current.vampire_power(50, 0))
|
||||
M.current.visible_message("<span class='warning'>[M.current.name] transforms!</span>")
|
||||
M.current.client.prefs.real_name = M.current.generate_name() //random_name(M.current.gender)
|
||||
M.current.client.prefs.randomize_appearance_for(M.current)
|
||||
M.current.client.prefs.random_character()
|
||||
M.current.client.prefs.copy_to(M.current)
|
||||
M.current.regenerate_icons()
|
||||
M.current.remove_vampire_blood(50)
|
||||
M.current.verbs -= /client/vampire/proc/vampire_shapeshift
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
I.Blend(rgb(- src.lumens, -src.lumens, -src.lumens), ICON_SUBTRACT)
|
||||
|
||||
I.Blend(new /icon('icons/mob/human.dmi', "mouth_m_s"), ICON_OVERLAY)
|
||||
I.Blend(new /icon('icons/mob/human.dmi', "underwear1_m_s"), ICON_OVERLAY)
|
||||
I.Blend(new /icon('icons/mob/underwear.dmi', "Mens White"), ICON_OVERLAY)
|
||||
|
||||
var/icon/U = new /icon('icons/mob/human_face.dmi', "hair_a_s")
|
||||
U.Blend(rgb(src.h_r, src.h_g, src.h_b), ICON_ADD)
|
||||
|
||||
@@ -6,47 +6,26 @@
|
||||
density = 1
|
||||
anchored = 1
|
||||
|
||||
/obj/structure/dresser/proc/convUnM(mund)
|
||||
return underwear_m.Find(mund)
|
||||
|
||||
/obj/structure/dresser/proc/convUnF(fund)
|
||||
return underwear_f.Find(fund)
|
||||
|
||||
/obj/structure/dresser/proc/convUs(us)
|
||||
return undershirt_list.Find(us)
|
||||
|
||||
/obj/structure/dresser/attack_hand(mob/user as mob)
|
||||
if(!Adjacent(user))//no tele-grooming
|
||||
return
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
|
||||
var/choice = input(user, "Underwear, or Undershirt?", "Changing") as null|anything in list("Underwear","Undershirt")
|
||||
var/choice = input(user, "Underwear or Undershirt?", "Changing") as null|anything in list("Underwear","Undershirt")
|
||||
|
||||
if(!Adjacent(user))
|
||||
return
|
||||
switch(choice)
|
||||
if("Underwear")
|
||||
if(H.gender == FEMALE)
|
||||
var/new_undies = input(user, "Select your underwear", "Changing") as null|anything in underwear_f
|
||||
if(new_undies)
|
||||
H << "\red You selected [new_undies]."
|
||||
var/freturn = convUnF(new_undies)
|
||||
H.underwear = freturn
|
||||
|
||||
else
|
||||
var/new_undies = input(user, "Select your underwear", "Changing") as null|anything in underwear_m
|
||||
if(new_undies)
|
||||
H << "\red You selected [new_undies]."
|
||||
var/mreturn = convUnM(new_undies)
|
||||
H.underwear = mreturn
|
||||
var/new_undies = input(user, "Select your underwear", "Changing") as null|anything in underwear_list
|
||||
if(new_undies)
|
||||
H.underwear = new_undies
|
||||
|
||||
if("Undershirt")
|
||||
var/new_undershirt = input(user, "Select your undershirt", "Changing") as null|anything in undershirt_list
|
||||
if(new_undershirt)
|
||||
H << "\red You selected [new_undershirt]"
|
||||
var/usreturn = convUs(new_undershirt)
|
||||
H.undershirt = usreturn
|
||||
H.undershirt = new_undershirt
|
||||
|
||||
add_fingerprint(H)
|
||||
H.update_body()
|
||||
@@ -79,13 +79,13 @@ var/global/sent_honksquad = 0
|
||||
var/honksquad_rank = pick("Corporal", "Sergeant", "Staff Sergeant", "Sergeant 1st Class", "Master Sergeant", "Sergeant Major")
|
||||
var/honksquad_name = pick(clown_names)
|
||||
|
||||
new_honksquad.gender = pick(MALE, FEMALE)
|
||||
|
||||
var/datum/preferences/A = new()//Randomize appearance for the commando.
|
||||
A.randomize_appearance_for(new_honksquad)
|
||||
|
||||
new_honksquad.real_name = "[!honk_leader_selected ? honksquad_rank : honksquad_leader_rank] [honksquad_name]"
|
||||
new_honksquad.age = !honk_leader_selected ? rand(23,35) : rand(35,45)
|
||||
if(honk_leader_selected)
|
||||
A.age = rand(35,45)
|
||||
A.real_name = "[honksquad_leader_rank] [honksquad_name]"
|
||||
else
|
||||
A.real_name = "[honksquad_rank] [honksquad_name]"
|
||||
A.copy_to(new_honksquad)
|
||||
|
||||
new_honksquad.dna.ready_dna(new_honksquad)//Creates DNA.
|
||||
|
||||
|
||||
@@ -396,16 +396,8 @@ client/proc/one_click_antag()
|
||||
//First we spawn a dude.
|
||||
var/mob/living/carbon/human/new_character = new(pick(latejoin))//The mob being spawned.
|
||||
|
||||
new_character.gender = pick(MALE,FEMALE)
|
||||
|
||||
var/datum/preferences/A = new()
|
||||
A.randomize_appearance_for(new_character)
|
||||
if(new_character.gender == MALE)
|
||||
new_character.real_name = "[pick(first_names_male)] [pick(last_names)]"
|
||||
else
|
||||
new_character.real_name = "[pick(first_names_female)] [pick(last_names)]"
|
||||
new_character.name = new_character.real_name
|
||||
new_character.age = rand(17,45)
|
||||
A.copy_to(new_character)
|
||||
|
||||
new_character.dna.ready_dna(new_character)
|
||||
new_character.key = G_found.key
|
||||
@@ -418,14 +410,13 @@ client/proc/one_click_antag()
|
||||
var/syndicate_commando_rank = pick("Corporal", "Sergeant", "Staff Sergeant", "Sergeant 1st Class", "Master Sergeant", "Sergeant Major")
|
||||
var/syndicate_commando_name = pick(last_names)
|
||||
|
||||
new_syndicate_commando.gender = pick(MALE, FEMALE)
|
||||
|
||||
var/datum/preferences/A = new()//Randomize appearance for the commando.
|
||||
A.randomize_appearance_for(new_syndicate_commando)
|
||||
|
||||
new_syndicate_commando.real_name = "[!syndicate_leader_selected ? syndicate_commando_rank : syndicate_commando_leader_rank] [syndicate_commando_name]"
|
||||
new_syndicate_commando.name = new_syndicate_commando.real_name
|
||||
new_syndicate_commando.age = !syndicate_leader_selected ? rand(23,35) : rand(35,45)
|
||||
if(syndicate_leader_selected)
|
||||
A.real_name = "[syndicate_commando_leader_rank] [syndicate_commando_name]"
|
||||
A.age = rand(35,45)
|
||||
else
|
||||
A.real_name = "[syndicate_commando_rank] [syndicate_commando_name]"
|
||||
A.copy_to(new_syndicate_commando)
|
||||
|
||||
new_syndicate_commando.dna.ready_dna(new_syndicate_commando)//Creates DNA.
|
||||
|
||||
@@ -610,14 +601,7 @@ client/proc/one_click_antag()
|
||||
|
||||
var/mob/living/carbon/human/newMember = new(L.loc)
|
||||
|
||||
newMember.gender = pick(MALE,FEMALE)
|
||||
A.randomize_appearance_for(newMember)
|
||||
if(newMember.gender == MALE)
|
||||
newMember.real_name = "[pick(first_names_male)] [pick(last_names)]"
|
||||
else
|
||||
newMember.real_name = "[pick(first_names_female)] [pick(last_names)]"
|
||||
newMember.name = newMember.real_name
|
||||
newMember.age = rand(17,45)
|
||||
A.copy_to(newMember)
|
||||
|
||||
newMember.dna.ready_dna(newMember)
|
||||
|
||||
@@ -639,14 +623,7 @@ client/proc/one_click_antag()
|
||||
|
||||
var/mob/living/carbon/human/newMember = new(L.loc)
|
||||
|
||||
newMember.gender = pick(MALE,FEMALE)
|
||||
A.randomize_appearance_for(newMember)
|
||||
if(newMember.gender == MALE)
|
||||
newMember.real_name = "[pick(first_names_male)] [pick(last_names)]"
|
||||
else
|
||||
newMember.real_name = "[pick(first_names_female)] [pick(last_names)]"
|
||||
newMember.name = newMember.real_name
|
||||
newMember.age = rand(17,45)
|
||||
A.copy_to(newMember)
|
||||
|
||||
newMember.dna.ready_dna(newMember)
|
||||
|
||||
|
||||
@@ -433,14 +433,11 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
else
|
||||
new_character.gender = pick(MALE,FEMALE)
|
||||
var/datum/preferences/A = new()
|
||||
A.randomize_appearance_for(new_character)
|
||||
new_character.real_name = G_found.real_name
|
||||
A.real_name = G_found.real_name
|
||||
A.copy_to(new_character)
|
||||
|
||||
if(!new_character.real_name)
|
||||
if(new_character.gender == MALE)
|
||||
new_character.real_name = capitalize(pick(first_names_male)) + " " + capitalize(pick(last_names))
|
||||
else
|
||||
new_character.real_name = capitalize(pick(first_names_female)) + " " + capitalize(pick(last_names))
|
||||
new_character.real_name = random_name(new_character.gender)
|
||||
new_character.name = new_character.real_name
|
||||
|
||||
if(G_found.mind && !G_found.mind.active)
|
||||
|
||||
@@ -104,13 +104,13 @@ var/global/sent_strike_team = 0
|
||||
var/commando_rank = pick("Corporal", "Sergeant", "Staff Sergeant", "Sergeant 1st Class", "Master Sergeant", "Sergeant Major")
|
||||
var/commando_name = pick(last_names)
|
||||
|
||||
new_commando.gender = pick(MALE, FEMALE)
|
||||
|
||||
var/datum/preferences/A = new()//Randomize appearance for the commando.
|
||||
A.randomize_appearance_for(new_commando)
|
||||
|
||||
new_commando.real_name = "[!leader_selected ? commando_rank : commando_leader_rank] [commando_name]"
|
||||
new_commando.age = !leader_selected ? rand(23,35) : rand(35,45)
|
||||
if(leader_selected)
|
||||
A.age = rand(35,45)
|
||||
A.real_name = "[commando_leader_rank] [commando_name]"
|
||||
else
|
||||
A.real_name = "[commando_rank] [commando_name]"
|
||||
A.copy_to(new_commando)
|
||||
|
||||
new_commando.dna.ready_dna(new_commando)//Creates DNA.
|
||||
|
||||
|
||||
@@ -108,13 +108,13 @@ var/global/sent_syndicate_strike_team = 0
|
||||
var/syndicate_commando_rank = pick("Corporal", "Sergeant", "Staff Sergeant", "Sergeant 1st Class", "Master Sergeant", "Sergeant Major")
|
||||
var/syndicate_commando_name = pick(last_names)
|
||||
|
||||
new_syndicate_commando.gender = pick(MALE, FEMALE)
|
||||
|
||||
var/datum/preferences/A = new()//Randomize appearance for the commando.
|
||||
A.randomize_appearance_for(new_syndicate_commando)
|
||||
|
||||
new_syndicate_commando.real_name = "[!syndicate_leader_selected ? syndicate_commando_rank : syndicate_commando_leader_rank] [syndicate_commando_name]"
|
||||
new_syndicate_commando.age = !syndicate_leader_selected ? rand(23,35) : rand(35,45)
|
||||
if(syndicate_leader_selected)
|
||||
A.age = rand(35,45)
|
||||
A.real_name = "[syndicate_commando_leader_rank] [syndicate_commando_name]"
|
||||
else
|
||||
A.real_name = "[syndicate_commando_rank] [syndicate_commando_name]"
|
||||
A.copy_to(new_syndicate_commando)
|
||||
|
||||
new_syndicate_commando.dna.ready_dna(new_syndicate_commando)//Creates DNA.
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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*/
|
||||
@@ -29,8 +29,8 @@
|
||||
var/age = 30 //Player's age (pure fluff)
|
||||
var/b_type = "A+" //Player's bloodtype
|
||||
|
||||
var/underwear = 1 //Which underwear the player wants
|
||||
var/undershirt = 0 //Which undershirt the player wants.
|
||||
var/underwear = "Nude" //Which underwear the player wants
|
||||
var/undershirt = "Nude" //Which undershirt the player wants.
|
||||
var/backbag = 2 //Which backpack type the player has chosen. Nothing, Satchel or Backpack.
|
||||
|
||||
//Equipment slots
|
||||
|
||||
@@ -318,10 +318,14 @@ var/global/list/damage_icon_parts = list()
|
||||
|
||||
//Underwear
|
||||
if(underwear && species.flags & HAS_UNDERWEAR)
|
||||
stand_icon.Blend(new /icon('icons/mob/human.dmi', "underwear[underwear]_[g]_s"), ICON_OVERLAY)
|
||||
var/datum/sprite_accessory/underwear/U = underwear_list[underwear]
|
||||
if(U)
|
||||
stand_icon.Blend(new /icon(U.icon, "uw_[U.icon_state]_s"), ICON_OVERLAY)
|
||||
|
||||
if(undershirt && species.flags & HAS_UNDERWEAR)
|
||||
stand_icon.Blend(new /icon('icons/mob/human.dmi', "undershirt[undershirt]_s"), ICON_OVERLAY)
|
||||
var/datum/sprite_accessory/undershirt/U2 = undershirt_list[undershirt]
|
||||
if(U2)
|
||||
stand_icon.Blend(new /icon(U2.icon, "us_[U2.icon_state]_s"), ICON_OVERLAY)
|
||||
|
||||
if(update_icons)
|
||||
update_icons()
|
||||
|
||||
@@ -468,11 +468,9 @@
|
||||
if(is_alien_whitelisted(src, client.prefs.language) || !config.usealienwhitelist || !(chosen_language.flags & WHITELISTED))
|
||||
new_character.add_language(client.prefs.language)
|
||||
if(ticker.random_players || appearance_isbanned(new_character))
|
||||
new_character.gender = pick(MALE, FEMALE)
|
||||
client.prefs.random_character()
|
||||
client.prefs.real_name = random_name(new_character.gender)
|
||||
client.prefs.randomize_appearance_for(new_character)
|
||||
else
|
||||
client.prefs.copy_to(new_character)
|
||||
client.prefs.copy_to(new_character)
|
||||
|
||||
src << sound(null, repeat = 0, wait = 0, volume = 85, channel = 1) // MAD JAMS cant last forever yo
|
||||
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
datum/preferences
|
||||
//The mob should have a gender you want before running this proc. Will run fine without H
|
||||
proc/randomize_appearance_for(var/mob/living/carbon/human/H)
|
||||
if(H)
|
||||
if(H.gender == MALE)
|
||||
gender = MALE
|
||||
else
|
||||
gender = FEMALE
|
||||
proc/random_character(gender_override)
|
||||
if(gender_override)
|
||||
gender = gender_override
|
||||
else
|
||||
gender = pick(MALE, FEMALE)
|
||||
underwear = random_underwear(gender)
|
||||
undershirt = random_undershirt(gender)
|
||||
if(species == "Human")
|
||||
s_tone = random_skin_tone()
|
||||
h_style = random_hair_style(gender, species)
|
||||
@@ -16,12 +17,8 @@ datum/preferences
|
||||
randomize_eyes_color()
|
||||
if(species == "Unathi" || species == "Tajaran" || species == "Skrell" || species == "Vulpkanin")
|
||||
randomize_skin_color()
|
||||
underwear = rand(1,underwear_m.len)
|
||||
undershirt = rand(1,undershirt_t.len)
|
||||
backbag = 2
|
||||
age = rand(AGE_MIN,AGE_MAX)
|
||||
if(H)
|
||||
copy_to(H,1)
|
||||
|
||||
|
||||
proc/randomize_hair_color(var/target = "hair")
|
||||
@@ -256,12 +253,16 @@ datum/preferences
|
||||
|
||||
|
||||
var/icon/underwear_s = null
|
||||
if(underwear > 0 && underwear < 7 && current_species.flags & HAS_UNDERWEAR)
|
||||
underwear_s = new/icon("icon" = 'icons/mob/human.dmi', "icon_state" = "underwear[underwear]_[g]_s")
|
||||
if(underwear && current_species.flags & HAS_UNDERWEAR)
|
||||
var/datum/sprite_accessory/underwear/U = underwear_list[underwear]
|
||||
if(U)
|
||||
underwear_s = new/icon(U.icon, "[U.icon_state]_s", ICON_OVERLAY)
|
||||
|
||||
var/icon/undershirt_s = null
|
||||
if(undershirt > 0 && undershirt < 45 && current_species.flags & HAS_UNDERWEAR)
|
||||
undershirt_s = new/icon("icon" = 'icons/mob/human.dmi', "icon_state" = "undershirt[undershirt]_s")
|
||||
if(undershirt && current_species.flags & HAS_UNDERWEAR)
|
||||
var/datum/sprite_accessory/undershirt/U2 = undershirt_list[undershirt]
|
||||
if(U2)
|
||||
undershirt_s = new/icon(U2.icon, "[U2.icon_state]_s", ICON_OVERLAY)
|
||||
|
||||
var/icon/clothes_s = null
|
||||
var/uniform_dmi='icons/mob/uniform.dmi'
|
||||
|
||||
@@ -17,16 +17,29 @@
|
||||
conversion in savefile.dm
|
||||
*/
|
||||
|
||||
/proc/init_sprite_accessory_subtypes(var/prototype, var/list/L, var/list/male, var/list/female)
|
||||
if(!istype(L)) L = list()
|
||||
if(!istype(male)) male = list()
|
||||
if(!istype(female)) female = list()
|
||||
|
||||
for(var/path in subtypesof(prototype))
|
||||
var/datum/sprite_accessory/D = new path()
|
||||
|
||||
L[D.name] = D
|
||||
|
||||
switch(D.gender)
|
||||
if(MALE) male += D.name
|
||||
if(FEMALE) female += D.name
|
||||
else
|
||||
male += D.name
|
||||
female += D.name
|
||||
return L
|
||||
|
||||
/datum/sprite_accessory
|
||||
|
||||
var/icon // the icon file the accessory is located in
|
||||
var/icon_state // the icon_state of the accessory
|
||||
var/preview_state // a custom preview state for whatever reason
|
||||
|
||||
var/name // the preview name of the accessory
|
||||
|
||||
// Determines if the accessory will be skipped or included in random hair generations
|
||||
var/gender = NEUTER
|
||||
var/icon //the icon file the accessory is located in
|
||||
var/icon_state //the icon_state of the accessory
|
||||
var/name //the preview name of the accessory
|
||||
var/gender = NEUTER //Determines if the accessory will be skipped or included in random hair generations
|
||||
|
||||
// Restrict some styles to specific species
|
||||
var/list/species_allowed = list("Human")
|
||||
@@ -935,3 +948,316 @@
|
||||
icon_state = "default"
|
||||
icon = 'icons/mob/human_races/r_skrell.dmi'
|
||||
species_allowed = list("Skrell")
|
||||
|
||||
///////////////////////////
|
||||
// Underwear Definitions //
|
||||
///////////////////////////
|
||||
/datum/sprite_accessory/underwear
|
||||
icon = 'icons/mob/underwear.dmi'
|
||||
|
||||
species_allowed = list("Human","Unathi","Vox","Diona","Kidan","Grey","Plasmaman","Skellington")
|
||||
|
||||
nude
|
||||
name = "Nude"
|
||||
icon_state = null
|
||||
gender = NEUTER
|
||||
|
||||
male_white
|
||||
name = "Mens White"
|
||||
icon_state = "male_white"
|
||||
gender = MALE
|
||||
|
||||
male_grey
|
||||
name = "Mens Grey"
|
||||
icon_state = "male_grey"
|
||||
gender = MALE
|
||||
|
||||
male_green
|
||||
name = "Mens Green"
|
||||
icon_state = "male_green"
|
||||
gender = MALE
|
||||
|
||||
male_blue
|
||||
name = "Mens Blue"
|
||||
icon_state = "male_blue"
|
||||
gender = MALE
|
||||
|
||||
male_black
|
||||
name = "Mens Black"
|
||||
icon_state = "male_black"
|
||||
gender = MALE
|
||||
|
||||
male_mankini
|
||||
name = "Mankini"
|
||||
icon_state = "male_mankini"
|
||||
gender = MALE
|
||||
|
||||
female_red
|
||||
name = "Ladies Red"
|
||||
icon_state = "female_red"
|
||||
gender = FEMALE
|
||||
|
||||
female_white
|
||||
name = "Ladies White"
|
||||
icon_state = "female_white"
|
||||
gender = FEMALE
|
||||
|
||||
female_yellow
|
||||
name = "Ladies Yellow"
|
||||
icon_state = "female_yellow"
|
||||
gender = FEMALE
|
||||
|
||||
female_blue
|
||||
name = "Ladies Blue"
|
||||
icon_state = "female_blue"
|
||||
gender = FEMALE
|
||||
|
||||
female_black
|
||||
name = "Ladies Black"
|
||||
icon_state = "female_black"
|
||||
gender = FEMALE
|
||||
|
||||
female_kinky
|
||||
name = "Ladies Kinky"
|
||||
icon_state = "female_kinky"
|
||||
gender = FEMALE
|
||||
|
||||
////////////////////////////
|
||||
// Undershirt Definitions //
|
||||
////////////////////////////
|
||||
/datum/sprite_accessory/undershirt
|
||||
icon = 'icons/mob/underwear.dmi'
|
||||
|
||||
species_allowed = list("Human","Unathi","Vox","Diona","Kidan","Grey","Plasmaman","Skellington")
|
||||
|
||||
/datum/sprite_accessory/undershirt/nude
|
||||
name = "Nude"
|
||||
icon_state = null
|
||||
gender = NEUTER
|
||||
|
||||
//plain color shirts
|
||||
/datum/sprite_accessory/undershirt/shirt_white
|
||||
name = "White Shirt"
|
||||
icon_state = "shirt_white"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/shirt_black
|
||||
name = "Black Shirt"
|
||||
icon_state = "shirt_black"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/shirt_grey
|
||||
name = "Grey Shirt"
|
||||
icon_state = "shirt_grey"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/shirt_red
|
||||
name = "Red Shirt"
|
||||
icon_state = "shirt_red"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/shirt_blue
|
||||
name = "Blue Shirt"
|
||||
icon_state = "shirt_blue"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/shirt_yellow
|
||||
name = "Yellow Shirt"
|
||||
icon_state = "shirt_yellow"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/shirt_green
|
||||
name = "Green Shirt"
|
||||
icon_state = "shirt_green"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/shirt_darkblue
|
||||
name = "Dark Blue Shirt"
|
||||
icon_state = "shirt_darkblue"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/shirt_darkred
|
||||
name = "Dark Red Shirt"
|
||||
icon_state = "shirt_darkred"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/shirt_darkgreen
|
||||
name = "Dark Green Shirt"
|
||||
icon_state = "shirt_darkgreen"
|
||||
gender = NEUTER
|
||||
//end plain color shirts
|
||||
|
||||
/datum/sprite_accessory/undershirt/shirt_heart
|
||||
name = "Heart Shirt"
|
||||
icon_state = "shirt_heart"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/shirt_corgi
|
||||
name = "Corgi Shirt"
|
||||
icon_state = "shirt_corgi"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/shirt_jack
|
||||
name = "Union Jack Shirt"
|
||||
icon_state = "shirt_jack"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/love_nt
|
||||
name = "I Love NT Shirt"
|
||||
icon_state = "shirt_lovent"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/peace
|
||||
name = "Peace Shirt"
|
||||
icon_state = "shirt_peace"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/mondmondjaja
|
||||
name = "Band Shirt"
|
||||
icon_state = "shirt_band"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/pacman
|
||||
name = "Pogoman Shirt"
|
||||
icon_state = "shirt_pogoman"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/shirt_ss13
|
||||
name = "SS13 Shirt"
|
||||
icon_state = "shirt_ss13"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/shirt_question
|
||||
name = "Question Mark Shirt"
|
||||
icon_state = "shirt_question"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/shirt_skull
|
||||
name = "Skull Shirt"
|
||||
icon_state = "shirt_skull"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/shirt_commie
|
||||
name = "Communist Shirt"
|
||||
icon_state = "shirt_commie"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/shirt_nano
|
||||
name = "Nanotrasen Shirt"
|
||||
icon_state = "shirt_nano"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/shirt_meat
|
||||
name = "Meat Shirt"
|
||||
icon_state = "shirt_meat"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/shirt_tiedie
|
||||
name = "Tiedie Shirt"
|
||||
icon_state = "shirt_tiedie"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/blue_striped
|
||||
name = "Striped Blue Shirt"
|
||||
icon_state = "shirt_bluestripe"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/brightblue_striped
|
||||
name = "Striped Bright Blue Shirt"
|
||||
icon_state = "shirt_brightbluestripe"
|
||||
gender = NEUTER
|
||||
|
||||
|
||||
//short sleeved
|
||||
/datum/sprite_accessory/undershirt/short_white
|
||||
name = "White Short-sleeved Shirt"
|
||||
icon_state = "short_white"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/short_purple
|
||||
name = "Purple Short-sleeved Shirt"
|
||||
icon_state = "short_purple"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/short_blue
|
||||
name = "Blue Short-sleeved Shirt"
|
||||
icon_state = "short_blue"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/short_green
|
||||
name = "Green Short-sleeved Shirt"
|
||||
icon_state = "short_green"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/short_black
|
||||
name = "Black Short-sleeved Shirt"
|
||||
icon_state = "short_black"
|
||||
gender = NEUTER
|
||||
//end short sleeved
|
||||
|
||||
//polo shirts
|
||||
/datum/sprite_accessory/undershirt/polo_blue
|
||||
name = "Blue Polo Shirt"
|
||||
icon_state = "polo_blue"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/polo_red
|
||||
name = "Red Polo Shirt"
|
||||
icon_state = "polo_red"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/polo_greyelllow
|
||||
name = "Grey-Yellow Polo Shirt"
|
||||
icon_state = "polo_greyellow"
|
||||
gender = NEUTER
|
||||
//end polo shirts
|
||||
|
||||
//sport shirts
|
||||
/datum/sprite_accessory/undershirt/sport_green
|
||||
name = "Green Sports Shirt"
|
||||
icon_state = "sport_green"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/sport_red
|
||||
name = "Red Sports Shirt"
|
||||
icon_state = "sport_red"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/sport_blue
|
||||
name = "Blue Sports Shirt"
|
||||
icon_state = "sport_blue"
|
||||
gender = NEUTER
|
||||
//end sport shirts
|
||||
|
||||
/datum/sprite_accessory/undershirt/jersey_red
|
||||
name = "Red Jersey"
|
||||
icon_state = "jersey_red"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/jersey_blue
|
||||
name = "Blue Jersey"
|
||||
icon_state = "jersey_blue"
|
||||
gender = NEUTER
|
||||
|
||||
|
||||
//tanktops
|
||||
/datum/sprite_accessory/undershirt/tank_white
|
||||
name = "White Tank-Top"
|
||||
icon_state = "tank_white"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/tank_black
|
||||
name = "Black Tank-Top"
|
||||
icon_state = "tank_black"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/tank_grey
|
||||
name = "Grey Tank-Top"
|
||||
icon_state = "tank_grey"
|
||||
gender = NEUTER
|
||||
|
||||
/datum/sprite_accessory/undershirt/tank_fire
|
||||
name = "Fire Tank-Top"
|
||||
icon_state = "tank_fire"
|
||||
gender = NEUTER
|
||||
//end tanktops
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 45 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 33 KiB |
Reference in New Issue
Block a user