Human Sprites 2: The Desimpsonifying (#7057)

This commit is contained in:
Matt Atlas
2019-11-09 11:23:42 +02:00
committed by Erki
parent 8d6c0404f8
commit 3b6f7996c4
18 changed files with 300 additions and 205 deletions
@@ -1,197 +1,204 @@
datum/preferences
/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,var/random_gender=TRUE)
if(random_gender)
gender = pick(MALE, FEMALE)
else
gender = H.gender
var/datum/species/current_species = all_species[species]
/datum/preferences/proc/randomize_appearance_for(var/mob/living/carbon/human/H,var/random_gender=TRUE)
if(random_gender)
gender = pick(MALE, FEMALE)
else
gender = H.gender
var/datum/species/current_species = all_species[species]
if(current_species)
if(current_species.appearance_flags & HAS_SKIN_TONE)
s_tone = random_skin_tone()
if(current_species.appearance_flags & HAS_EYE_COLOR)
randomize_eyes_color()
if(current_species.appearance_flags & HAS_SKIN_COLOR)
randomize_skin_color()
if(current_species.appearance_flags & HAS_UNDERWEAR)
if(gender == FEMALE)
underwear = underwear_f[pick(underwear_f)]
else
underwear = underwear_m[pick(underwear_m)]
undershirt = undershirt_t[pick(undershirt_t)]
if(current_species.appearance_flags & HAS_SOCKS)
if(gender == FEMALE)
socks = socks_f[pick(socks_f)]
else
socks = socks_m[pick(socks_m)]
if(current_species)
if(current_species.appearance_flags & HAS_SKIN_TONE)
s_tone = random_skin_tone()
if(current_species.appearance_flags & HAS_EYE_COLOR)
randomize_eyes_color()
if(current_species.appearance_flags & HAS_SKIN_COLOR)
randomize_skin_color(current_species)
if(current_species.appearance_flags & HAS_UNDERWEAR)
if(gender == FEMALE)
underwear = underwear_f[pick(underwear_f)]
else
underwear = underwear_m[pick(underwear_m)]
undershirt = undershirt_t[pick(undershirt_t)]
if(current_species.appearance_flags & HAS_SOCKS)
if(gender == FEMALE)
socks = socks_f[pick(socks_f)]
else
socks = socks_m[pick(socks_m)]
h_style = random_hair_style(gender, species)
f_style = random_facial_hair_style(gender, species)
randomize_hair_color("hair")
randomize_hair_color("facial")
h_style = random_hair_style(gender, species)
f_style = random_facial_hair_style(gender, species)
randomize_hair_color("hair")
randomize_hair_color("facial")
backbag = 2
age = rand(getMinAge(),getMaxAge())
if(H)
copy_to(H,1)
backbag = 2
age = rand(getMinAge(),getMaxAge())
if(H)
copy_to(H,1)
proc/randomize_hair_color(var/target = "hair")
if(prob (75) && target == "facial") // Chance to inherit hair color
r_facial = r_hair
g_facial = g_hair
b_facial = b_hair
return
/datum/preferences/proc/randomize_hair_color(var/target = "hair")
if(prob (75) && target == "facial") // Chance to inherit hair color
r_facial = r_hair
g_facial = g_hair
b_facial = b_hair
return
var/red
var/green
var/blue
var/red
var/green
var/blue
var/col = pick ("blonde", "black", "chestnut", "copper", "brown", "wheat", "old", "punk")
switch(col)
if("blonde")
red = 255
green = 255
blue = 0
if("black")
red = 0
green = 0
blue = 0
if("chestnut")
red = 153
green = 102
blue = 51
if("copper")
red = 255
green = 153
blue = 0
if("brown")
red = 102
green = 51
blue = 0
if("wheat")
red = 255
green = 255
blue = 153
if("old")
red = rand (100, 255)
green = red
blue = red
if("punk")
red = rand (0, 255)
green = rand (0, 255)
blue = rand (0, 255)
var/col = pick ("blonde", "black", "chestnut", "copper", "brown", "wheat", "old", "punk")
switch(col)
if("blonde")
red = 255
green = 255
blue = 0
if("black")
red = 0
green = 0
blue = 0
if("chestnut")
red = 153
green = 102
blue = 51
if("copper")
red = 255
green = 153
blue = 0
if("brown")
red = 102
green = 51
blue = 0
if("wheat")
red = 255
green = 255
blue = 153
if("old")
red = rand (100, 255)
green = red
blue = red
if("punk")
red = rand (0, 255)
green = rand (0, 255)
blue = rand (0, 255)
red = max(min(red + rand (-25, 25), 255), 0)
green = max(min(green + rand (-25, 25), 255), 0)
blue = max(min(blue + rand (-25, 25), 255), 0)
red = max(min(red + rand (-25, 25), 255), 0)
green = max(min(green + rand (-25, 25), 255), 0)
blue = max(min(blue + rand (-25, 25), 255), 0)
switch(target)
if("hair")
r_hair = red
g_hair = green
b_hair = blue
if("facial")
r_facial = red
g_facial = green
b_facial = blue
switch(target)
if("hair")
r_hair = red
g_hair = green
b_hair = blue
if("facial")
r_facial = red
g_facial = green
b_facial = blue
proc/randomize_eyes_color()
var/red
var/green
var/blue
/datum/preferences/proc/randomize_eyes_color()
var/red
var/green
var/blue
var/col = pick ("black", "grey", "brown", "chestnut", "blue", "lightblue", "green", "albino")
switch(col)
if("black")
red = 0
green = 0
blue = 0
if("grey")
red = rand (100, 200)
green = red
blue = red
if("brown")
red = 102
green = 51
blue = 0
if("chestnut")
red = 153
green = 102
blue = 0
if("blue")
red = 51
green = 102
blue = 204
if("lightblue")
red = 102
green = 204
blue = 255
if("green")
red = 0
green = 102
blue = 0
if("albino")
red = rand (200, 255)
green = rand (0, 150)
blue = rand (0, 150)
var/col = pick ("black", "grey", "brown", "chestnut", "blue", "lightblue", "green", "albino")
switch(col)
if("black")
red = 0
green = 0
blue = 0
if("grey")
red = rand (100, 200)
green = red
blue = red
if("brown")
red = 102
green = 51
blue = 0
if("chestnut")
red = 153
green = 102
blue = 0
if("blue")
red = 51
green = 102
blue = 204
if("lightblue")
red = 102
green = 204
blue = 255
if("green")
red = 0
green = 102
blue = 0
if("albino")
red = rand (200, 255)
green = rand (0, 150)
blue = rand (0, 150)
red = max(min(red + rand (-25, 25), 255), 0)
green = max(min(green + rand (-25, 25), 255), 0)
blue = max(min(blue + rand (-25, 25), 255), 0)
red = max(min(red + rand (-25, 25), 255), 0)
green = max(min(green + rand (-25, 25), 255), 0)
blue = max(min(blue + rand (-25, 25), 255), 0)
r_eyes = red
g_eyes = green
b_eyes = blue
r_eyes = red
g_eyes = green
b_eyes = blue
proc/randomize_skin_color()
var/red
var/green
var/blue
/datum/preferences/proc/randomize_skin_color(var/datum/species/current_species)
var/red
var/green
var/blue
var/col = pick ("black", "grey", "brown", "chestnut", "blue", "lightblue", "green", "albino")
switch(col)
if("black")
red = 0
green = 0
blue = 0
if("grey")
red = rand (100, 200)
green = red
blue = red
if("brown")
red = 102
green = 51
blue = 0
if("chestnut")
red = 153
green = 102
blue = 0
if("blue")
red = 51
green = 102
blue = 204
if("lightblue")
red = 102
green = 204
blue = 255
if("green")
red = 0
green = 102
blue = 0
if("albino")
red = rand (200, 255)
green = rand (0, 150)
blue = rand (0, 150)
if(current_species && current_species.appearance_flags & HAS_SKIN_PRESET)
var/hex = pick(current_species.character_color_presets)
r_skin = GetRedPart(hex)
g_skin = GetGreenPart(hex)
b_skin = GetBluePart(hex)
return
red = max(min(red + rand (-25, 25), 255), 0)
green = max(min(green + rand (-25, 25), 255), 0)
blue = max(min(blue + rand (-25, 25), 255), 0)
var/col = pick ("black", "grey", "brown", "chestnut", "blue", "lightblue", "green", "albino")
switch(col)
if("black")
red = 0
green = 0
blue = 0
if("grey")
red = rand (100, 200)
green = red
blue = red
if("brown")
red = 102
green = 51
blue = 0
if("chestnut")
red = 153
green = 102
blue = 0
if("blue")
red = 51
green = 102
blue = 204
if("lightblue")
red = 102
green = 204
blue = 255
if("green")
red = 0
green = 102
blue = 0
if("albino")
red = rand (200, 255)
green = rand (0, 150)
blue = rand (0, 150)
r_skin = red
g_skin = green
b_skin = blue
red = max(min(red + rand (-25, 25), 255), 0)
green = max(min(green + rand (-25, 25), 255), 0)
blue = max(min(blue + rand (-25, 25), 255), 0)
r_skin = red
g_skin = green
b_skin = blue
/datum/preferences/proc/dress_preview_mob(var/mob/living/carbon/human/mannequin)
@@ -238,6 +245,9 @@ datum/preferences
/datum/preferences/proc/update_preview_icon()
var/mob/living/carbon/human/dummy/mannequin/mannequin = SSmob.get_mannequin(client.ckey)
mannequin.delete_inventory(TRUE)
mannequin.species.create_organs(mannequin)
if(gender)
mannequin.change_gender(gender)
dress_preview_mob(mannequin)
preview_icon = icon('icons/effects/effects.dmi', "nothing")
@@ -22,9 +22,10 @@
return
src.gender = gender
dna.SetUIState(DNA_UI_GENDER, src.gender != MALE, 1)
reset_hair()
update_body()
update_dna()
species.create_organs(src)
return 1
/mob/living/carbon/human/proc/change_hair(var/hair_style)
@@ -112,7 +113,7 @@
return 1
/mob/living/carbon/human/proc/change_skin_color(var/red, var/green, var/blue)
if(red == r_skin && green == g_skin && blue == b_skin || !(species.appearance_flags & HAS_SKIN_COLOR))
if((red == r_skin && green == g_skin && blue == b_skin) || !((species.appearance_flags & HAS_SKIN_COLOR) && (species.appearance_flags & HAS_SKIN_PRESET)))
return
r_skin = red
@@ -212,6 +212,7 @@
var/list/allowed_religions = list(RELIGION_NONE, RELIGION_OTHER, RELIGION_CHRISTIANITY, RELIGION_ISLAM, RELIGION_JUDAISM, RELIGION_HINDU, RELIGION_BUDDHISM, RELIGION_MOROZ, RELIGION_TRINARY)
var/zombie_type //What zombie species they become
var/list/character_color_presets
/datum/species/proc/get_eyes(var/mob/living/carbon/human/H)
return
@@ -25,7 +25,7 @@
name_language = null // Use the first-name last-name generator rather than a language scrambler
mob_size = 9
spawn_flags = CAN_JOIN
appearance_flags = HAS_HAIR_COLOR | HAS_SKIN_TONE | HAS_LIPS | HAS_UNDERWEAR | HAS_EYE_COLOR | HAS_SOCKS
appearance_flags = HAS_HAIR_COLOR | HAS_SKIN_TONE | HAS_LIPS | HAS_UNDERWEAR | HAS_EYE_COLOR | HAS_SOCKS | HAS_SKIN_PRESET
remains_type = /obj/effect/decal/remains/human
stamina = 130 // Humans can sprint for longer than any other species
@@ -38,4 +38,6 @@
inherent_verbs = list(
/mob/living/carbon/human/proc/tie_hair)
zombie_type = "Zombie"
zombie_type = "Zombie"
base_color = "#25032"
character_color_presets = list("Dark" = "#000000", "Warm" = "#250302", "Cold" = "#1e1e29")
@@ -43,7 +43,7 @@
"Your synthetic flesh crawls in the heat, swelling into a disgusting morass of plastic."
)
appearance_flags = HAS_HAIR_COLOR | HAS_SKIN_TONE | HAS_EYE_COLOR | HAS_FBP | HAS_UNDERWEAR | HAS_SOCKS
appearance_flags = HAS_HAIR_COLOR | HAS_SKIN_TONE | HAS_EYE_COLOR | HAS_FBP | HAS_UNDERWEAR | HAS_SOCKS | HAS_SKIN_PRESET
has_limbs = list(
"chest" = list("path" = /obj/item/organ/external/chest/shell),
@@ -59,6 +59,9 @@
"r_foot" = list("path" = /obj/item/organ/external/foot/right/shell)
)
base_color = "#25032"
character_color_presets = list("Dark" = "#000000", "Warm" = "#250302", "Cold" = "#1e1e29")
sprint_temperature_factor = 1.3
sprint_charge_factor = 0.85