moving along

This commit is contained in:
LetterJay
2016-07-04 01:59:35 -05:00
parent 35a1723e98
commit 62652ebf63
4 changed files with 244 additions and 21 deletions

View File

@@ -57,7 +57,7 @@
//DNA - Because fuck you and your magic numbers being all over the codebase.
#define DNA_BLOCK_SIZE 3
#define DNA_UNI_IDENTITY_BLOCKS 7
#define DNA_UNI_IDENTITY_BLOCKS 18
#define DNA_HAIR_COLOR_BLOCK 1
#define DNA_FACIAL_HAIR_COLOR_BLOCK 2
#define DNA_SKIN_TONE_BLOCK 3
@@ -65,6 +65,17 @@
#define DNA_GENDER_BLOCK 5
#define DNA_FACIAL_HAIR_STYLE_BLOCK 6
#define DNA_HAIR_STYLE_BLOCK 7
#define DNA_COLOR_ONE_BLOCK 8
#define DNA_COLOR_TWO_BLOCK 9
#define DNA_COLOR_THR_BLOCK 10
#define DNA_COLOR_SWITCH_BLOCK 11
#define DNA_COLOR_SWITCH_MAX 7 //must be (2^(n+1))-1
#define DNA_COCK_BLOCK 12
#define DNA_MUTANTRACE_BLOCK 13
#define DNA_MUTANTTAIL_BLOCK 14
#define DNA_MUTANTWING_BLOCK 15
#define DNA_WINGCOLOR_BLOCK 16
#define DNA_TAUR_BLOCK 17
#define DNA_STRUC_ENZYMES_BLOCKS 19
#define DNA_UNIQUE_ENZYMES_LEN 32

View File

@@ -76,6 +76,51 @@
L[DNA_FACIAL_HAIR_COLOR_BLOCK] = sanitize_hexcolor(H.facial_hair_color)
L[DNA_SKIN_TONE_BLOCK] = construct_block(skin_tones.Find(H.skin_tone), skin_tones.len)
L[DNA_EYE_COLOR_BLOCK] = sanitize_hexcolor(H.eye_color)
if(H.heterochromia)
L[DNA_EYE_COLOR_TWO_BLOCK] = sanitize_hexcolor(H.heterochromia)
L[DNA_EYE_COLOR_SWITCH_BLOCK] = construct_block(2,2)
else
L[DNA_EYE_COLOR_TWO_BLOCK] = sanitize_hexcolor(H.eye_color)
L[DNA_EYE_COLOR_SWITCH_BLOCK] = construct_block(1,2)
var/colour_switch=0
if(special_color[1])
L[DNA_COLOR_ONE_BLOCK] = sanitize_hexcolor(special_color[1])
colour_switch+=1
else
L[DNA_COLOR_ONE_BLOCK] = random_string(DNA_BLOCK_SIZE,hex_characters)
if(special_color[2])
L[DNA_COLOR_TWO_BLOCK] = sanitize_hexcolor(special_color[2])
colour_switch+=2
else
L[DNA_COLOR_TWO_BLOCK] = random_string(DNA_BLOCK_SIZE,hex_characters)
if(special_color[3])
L[DNA_COLOR_THR_BLOCK] = sanitize_hexcolor(special_color[3])
colour_switch+=4
else
L[DNA_COLOR_THR_BLOCK] = random_string(DNA_BLOCK_SIZE,hex_characters)
L[DNA_COLOR_SWITCH_BLOCK] = construct_block(colour_switch+1,DNA_COLOR_SWITCH_MAX+1)
/*if(species_list[mutantrace])
L[DNA_MUTANTRACE_BLOCK] = construct_block(species_list.Find(mutantrace), species_list.len+1)
else
L[DNA_MUTANTRACE_BLOCK] = construct_block(species_list.len+1, species_list.len+1)*/
L[DNA_MUTANTRACE_BLOCK] = generate_race_block()
if(mutant_tails.Find(mutanttail))
L[DNA_MUTANTTAIL_BLOCK] = construct_block(mutant_tails.Find(mutanttail), mutant_tails.len+1)
else
L[DNA_MUTANTTAIL_BLOCK] = construct_block(mutant_tails.len+1, mutant_tails.len+1)
if(mutant_wings.Find(mutantwing))
L[DNA_MUTANTWING_BLOCK] = construct_block(mutant_wings.Find(mutantwing), mutant_wings.len+1)
else
L[DNA_MUTANTWING_BLOCK] = construct_block(mutant_wings.len+1, mutant_wings.len+1)
L[DNA_WINGCOLOR_BLOCK] = sanitize_hexcolor(wingcolor)
L[DNA_TAUR_BLOCK] = construct_block(taur+1, 2)
var/cock_block=0
if(cock["has"])
cock_block+=1
if(vagina)
cock_block+=2
L[DNA_COCK_BLOCK] = construct_block(cock_block+1, 4)
for(var/i=1, i<=DNA_UNI_IDENTITY_BLOCKS, i++)
if(L[i])
@@ -249,6 +294,49 @@ mob/living/carbon/human/updateappearance(icon_update=1, mutcolor_update=0, mutat
eye_color = sanitize_hexcolor(getblock(structure, DNA_EYE_COLOR_BLOCK))
facial_hair_style = facial_hair_styles_list[deconstruct_block(getblock(structure, DNA_FACIAL_HAIR_STYLE_BLOCK), facial_hair_styles_list.len)]
hair_style = hair_styles_list[deconstruct_block(getblock(structure, DNA_HAIR_STYLE_BLOCK), hair_styles_list.len)]
var/mutantrace_c = deconstruct_block(getblock(structure, DNA_MUTANTRACE_BLOCK), species_list.len+1)
if(mutantrace_c<=species_list.len && kpcode_race_restricted(species_list[mutantrace_c])!=2)
dna.species=kpcode_race_get(species_list[mutantrace_c])
var/mutanttail_c = deconstruct_block(getblock(structure, DNA_MUTANTTAIL_BLOCK), mutant_tails.len+1)
if(mutanttail_c<=mutant_tails.len)
dna.mutanttail=mutant_tails[mutanttail_c]
else
dna.mutanttail=null
var/mutantwing_c = deconstruct_block(getblock(structure, DNA_MUTANTWING_BLOCK), mutant_wings.len+1)
if(mutantwing_c<=mutant_wings.len)
dna.mutantwing=mutant_wings[mutantwing_c]
else
dna.mutantwing=null
dna.wingcolor = sanitize_hexcolor(getblock(structure, DNA_WINGCOLOR_BLOCK))
var/colour_switch=deconstruct_block(getblock(structure, DNA_COLOR_SWITCH_BLOCK), DNA_COLOR_SWITCH_MAX+1)
colour_switch-=1
if(colour_switch&1)
dna.special_color[1]=sanitize_hexcolor(getblock(structure, DNA_COLOR_ONE_BLOCK))
else
dna.special_color[1]=null
if(colour_switch&2)
dna.special_color[2]=sanitize_hexcolor(getblock(structure, DNA_COLOR_TWO_BLOCK))
else
dna.special_color[2]=null
if(colour_switch&4)
dna.special_color[3]=sanitize_hexcolor(getblock(structure, DNA_COLOR_THR_BLOCK))
else
dna.special_color[3]=null
var/cock_block=deconstruct_block(getblock(structure, DNA_COCK_BLOCK), 4)
cock_block-=1
if(!(cock_block&1))
dna.cock["has"]=0
else if(!dna.cock["has"]&&(cock_block&1))
dna.cock["has"]=1
if(cock_block&2)
dna.vagina=1
else
dna.vagina=0
dna.taur=deconstruct_block(getblock(structure, DNA_TAUR_BLOCK), 2)-1
if(icon_update)
update_body()
update_hair()

View File

@@ -41,6 +41,31 @@ var/list/preferences_datums = list()
var/allow_midround_antag = 1
var/preferred_map = null
//vore code
var/mutant_tail = "none"
var/mutant_wing = "none"
var/wingcolor = "FFF"
var/special_color[COLOUR_LIST_SIZE]
//var/special_color_one = null
//var/special_color_two = null
var/vore_banned_methods = 0
var/vore_extra_bans = 65535
var/list/vore_ability = list(
"1"=2,
"2"=0,
"4"=0,
"8"=0,
"16"=0,
"32"=0,
"64"=1,
"128"=0,
"256"=2) //BAAAAD way to do this
var/character_size="normal"
var/be_taur=0
var/list/p_cock=list("has"=0,"type"="human","color"="900","sheath"="FFF")
var/p_vagina=0
//character preferences
var/real_name //our character's name
var/be_random_name = 0 //whether we'll have a random name every round
@@ -184,14 +209,43 @@ var/list/preferences_datums = list()
dat += "<table width='100%'><tr><td width='24%' valign='top'>"
if(config.mutant_races)
dat += "<b>Species:</b><BR><a href='?_src_=prefs;preference=species;task=input'>[pref_species.name]</a><BR>"
dat += "<b>Species:</b><BR><a href='?_src_=prefs;preference=species;task=input'>[pref_species.id]</a><BR>"
dat += "<b>Human Tail:</b><a href='?_src_=prefs;preference=mutant_tail;task=input'>[mutant_tail]</a><BR>"
dat += "<b>Taur:</b><a href='?_src_=prefs;preference=be_taur;task=input'>[be_taur ? "Yes" : "No"]</a>"
if(!kpcode_cantaur(pref_species.id))
dat += " (not available for [pref_species.id])"
dat += "<BR>"
if(special_color[1])
dat += "<span style='border:1px solid #161616; background-color: #[special_color[1]];'>&nbsp;&nbsp;&nbsp;</span> <a href='?_src_=prefs;preference=special_color;which=1;task=input'>Primary</a><BR>"
else
dat += "<a href='?_src_=prefs;preference=special_color;which=1;task=input'>Primary?</a><BR>"
if(special_color[2])
dat += "<span style='border:1px solid #161616; background-color: #[special_color[2]];'>&nbsp;&nbsp;&nbsp;</span> <a href='?_src_=prefs;preference=special_color;which=2;task=input'>Secondary</a><BR>"
else
dat += "<a href='?_src_=prefs;preference=special_color;which=2;task=input'>Secondary?</a><BR>"
if(special_color[3])
dat += "<span style='border:1px solid #161616; background-color: #[special_color[3]];'>&nbsp;&nbsp;&nbsp;</span> <a href='?_src_=prefs;preference=special_color;which=3;task=input'>Tertiary</a><BR>"
else
dat += "<a href='?_src_=prefs;preference=special_color;which=3;task=input'>Tertiary?</a><BR>"
else
dat += "<b>Species:</b> Human<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 += "<b>Socks:</b><BR><a href ='?_src_=prefs;preference=socks;task=input'>[socks]</a><BR>"
dat += "<b>Backpack:</b><BR><a href ='?_src_=prefs;preference=bag;task=input'>[backbag]</a><BR></td>"
dat += "<b>Size:</b> <a href='?_src_=prefs;preference=character_size;task=input'>[character_size]</a><BR>"
dat += "<b>Vore Preferences:</b> <a href='?_src_=prefs;preference=vore_panel;task=input'>Open</a><BR>"
dat += "<h3>Wings</h3>"
dat += "<a href='?_src_=prefs;preference=mutant_wing;task=input'>[mutant_wing]</a><BR>"
dat += "<span style='border: 1px solid #161616; background-color: #[wingcolor];'>&nbsp;&nbsp;&nbsp;</span> <a href='?_src_=prefs;preference=wingcolor;task=input'>Change</a><BR>"
dat += "<a href='byond://?src=\ref[user];preference=flavor_text;task=input'><b>Set Flavor Text</b></a><br>"
if(lentext(flavor_text) <= 40)
if(!lentext(flavor_text))
dat += "\[...\]"
else
dat += "[flavor_text]"
else
dat += "[TextPreview(flavor_text)]...<br>"
dat += "<br>"
if(pref_species.use_skintones)
@@ -234,7 +288,7 @@ var/list/preferences_datums = list()
dat += "</td>"
if(config.mutant_races) //We don't allow mutant bodyparts for humans either unless this is true.
/*if(config.mutant_races) //We don't allow mutant bodyparts for humans either unless this is true.
if((MUTCOLORS in pref_species.specflags) || (MUTCOLORS_PARTSONLY in pref_species.specflags))
@@ -329,7 +383,7 @@ var/list/preferences_datums = list()
dat += "</td>"
dat += "</tr></table>"
dat += "</tr></table>"*/
if (1) // Game Preferences
@@ -812,10 +866,18 @@ var/list/preferences_datums = list()
if(new_age)
age = max(min( round(text2num(new_age)), AGE_MAX),AGE_MIN)
if("metadata")
/*if("metadata")
var/new_metadata = input(user, "Enter any information you'd like others to see, such as Roleplay-preferences:", "Game Preference" , metadata) as message|null
if(new_metadata)
metadata = sanitize(copytext(new_metadata,1,MAX_MESSAGE_LEN))
metadata = sanitize(copytext(new_metadata,1,MAX_MESSAGE_LEN))*/
if("flavor_text")
var/msg = input(usr,"Set the flavor text in your 'examine' verb. This can also be used for OOC notes and preferences!","Flavor Text",html_decode(flavor_text)) as message
if(msg != null)
msg = copytext(msg, 1, MAX_MESSAGE_LEN)
msg = html_encode(msg)
flavor_text = msg
if("hair")
var/new_hair = input(user, "Choose your character's hair colour:", "Character Preference") as null|color
@@ -900,16 +962,13 @@ var/list/preferences_datums = list()
eye_color = sanitize_hexcolor(new_eyes)
if("species")
var/result = input(user, "Select a species", "Species Selection") as null|anything in roundstart_species
var/result = input(user, "Select a species", "Species Selection") as null|anything in kpcode_race_getlist(ckey)
if(result)
var/newtype = roundstart_species[result]
var/newtype = species_list[result]
pref_species = new newtype()
//Now that we changed our species, we must verify that the mutant colour is still allowed.
var/temp_hsv = RGBtoHSV(features["mcolor"])
if(features["mcolor"] == "#000" || (!(MUTCOLORS_PARTSONLY in pref_species.specflags) && ReadHSV(temp_hsv)[3] < ReadHSV("#7F7F7F")[3]))
features["mcolor"] = pref_species.default_color
//if(mutant_color == "#000")
// mutant_color = pref_species.default_color
if("mutant_color")
var/new_mutantcolor = input(user, "Choose your character's alien/mutant color:", "Character Preference") as color|null
if(new_mutantcolor)
@@ -921,7 +980,45 @@ var/list/preferences_datums = list()
else
user << "<span class='danger'>Invalid color. Your color is not bright enough.</span>"
if("tail_lizard")
if("mutant_tail")
var/new_mutant_tail = input(user, "Choose your character's tail for when they are human:", "Character Preference") as null|anything in mutant_tails
if(new_mutant_tail)
mutant_tail = new_mutant_tail
if("mutant_wing")
var/new_mutant_wing = input(user, "Choose your character's wings:", "Character Preference") as null|anything in mutant_wings
if(new_mutant_wing)
mutant_wing = new_mutant_wing
if("wingcolor")
var/new_wingcolor = input(user, "Choose your character's wing colour:", "Character Preference") as color|null
if(new_wingcolor)
wingcolor = sanitize_hexcolor(new_wingcolor)
if("special_color")
var/index_tc=href_list["which"]
switch(alert("Use a special colour for #[index_tc]?","Character Preference","Yes","No","Cancel"))
if("Yes")
var/new_color = input(user, "Choose colour #[index_tc]:", "Character Preference") as null|color
if(new_color)
special_color[text2num(index_tc)] = sanitize_hexcolor(new_color)
if("No")
special_color[text2num(index_tc)]=null
if("character_size")
var/new_size = input(user, "Choose your character's size:", "Character Preference") in list("huge", "large", "normal", "small", "tiny")
if(new_size)
character_size=new_size
if("vore_panel")
var/obj/vore_preferences/VP=new()
VP.target=src
VP.ShowChoices(user)
if("be_taur")
be_taur = !be_taur
/*if("tail_lizard")
var/new_tail
new_tail = input(user, "Choose your character's tail:", "Character Preference") as null|anything in tails_list_lizard
if(new_tail)
@@ -973,7 +1070,7 @@ var/list/preferences_datums = list()
var/new_body_markings
new_body_markings = input(user, "Choose your character's body markings:", "Character Preference") as null|anything in body_markings_list
if(new_body_markings)
features["body_markings"] = new_body_markings
features["body_markings"] = new_body_markings*/
if("s_tone")
var/new_s_tone = input(user, "Choose your character's skin-tone:", "Character Preference") as null|anything in skin_tones
@@ -1176,6 +1273,30 @@ var/list/preferences_datums = list()
character.gender = gender
character.age = age
if(mutant_tail != "none" && config.mutant_races)
character.dna.mutanttail = mutant_tail
if(mutant_wing != "none" && config.mutant_races)
character.dna.mutantwing = mutant_wing
character.dna.wingcolor=wingcolor
if(be_taur)
character.dna.taur=1
character.dna.special_color = special_color
character.dna.cock=p_cock
character.dna.vagina=p_vagina
character.vore_banned_methods=vore_banned_methods
character.vore_extra_bans=vore_extra_bans
character.vore_ability=vore_ability
if(character_size!="normal")
if(character_size=="small")
character.sizeplay_set(SIZEPLAY_MICRO)
else if(character_size=="tiny")
character.sizeplay_set(SIZEPLAY_TINY)
else if(character_size=="large")
character.sizeplay_set(SIZEPLAY_MACRO)
else
character.sizeplay_set(SIZEPLAY_HUGE)
character.eye_color = eye_color
character.hair_color = hair_color
character.facial_hair_color = facial_hair_color

View File

@@ -1,6 +1,9 @@
/mob/living/
var/list/stomach_contents = list()
/mob/living/carbon
gender = MALE
var/list/stomach_contents = list()
//var/list/stomach_contents = list()
var/list/internal_organs = list() //List of /obj/item/organ in the mob. They don't go in the contents for some reason I don't want to know.
var/list/internal_organs_slot = list() //Same as above, but stores "slot ID" - "organ" pairs for easy access.