Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Vox Race #21275

Merged
merged 83 commits into from
Jun 18, 2024
Merged

Vox Race #21275

Show file tree
Hide file tree
Changes from 81 commits
Commits
Show all changes
83 commits
Select commit Hold shift + click to select a range
7d8b869
add dna blocks
13spacemen Jan 18, 2024
c8a0279
remove vox eyes option
13spacemen Jan 20, 2024
f4f190f
vox hair icon gen in handle_hair proc
13spacemen Jan 20, 2024
ef95266
add 2nd mutant color
13spacemen Jan 21, 2024
fce1f4d
vox V blue blood type
13spacemen Jan 21, 2024
5acb5cd
lungs work properly
13spacemen Jan 22, 2024
982fd88
colortone proc grayscale arg
13spacemen Jan 23, 2024
f7be732
more husking improvements
13spacemen Jan 24, 2024
81b8d59
add husk color for dynamic husk icons
13spacemen Jan 24, 2024
44a930b
arg for drawing blood in husk image gen
13spacemen Jan 25, 2024
b6caae7
vox bodies replaced by skin tone
13spacemen Jan 28, 2024
3fd28c7
uncapitalized vox tail types
13spacemen Jan 29, 2024
fe4d9bd
update skin tone and tail procs
13spacemen Jan 29, 2024
cde1d7b
added some vox specific underwear
13spacemen Jan 29, 2024
57e6715
improved skin tone and limb variant code
13spacemen Jan 29, 2024
921ef22
vox underwear pref icons
13spacemen Jan 29, 2024
94fce9d
sprite sheets system in icon code
13spacemen Jan 29, 2024
4d46d8c
many sprites added
13spacemen Jan 29, 2024
76081c1
changesource flags
13spacemen Jan 30, 2024
c307b55
done underwear and undershirts
13spacemen Jan 30, 2024
118efcf
name procs
13spacemen Jan 30, 2024
91e5459
hair, facial hair progress, renamed hair to quills
13spacemen Jan 30, 2024
4322aca
all hair and facial hair in
13spacemen Jan 30, 2024
cfd16db
add n2 pref, big n2 tank, suicide messages, butt sprites, tail wont u…
13spacemen Jan 30, 2024
12eea5f
flag renames, add no vox allowed sign, default n2 tank is specialized
13spacemen Jan 30, 2024
1ec35fd
vox heart sprite, lang sprite, some lore
13spacemen Jan 30, 2024
5ae30b4
vox armalis scream added until armalis exist
13spacemen Jan 30, 2024
c2a7acf
added bay vox clothes, disabled armalis scream for regular vox, added…
13spacemen Jan 31, 2024
6b3c196
fix species specific icons, fix other sprites
13spacemen Jan 31, 2024
0c2dcce
rearrange clothing, add scrap armor, crimson tail enabled
13spacemen Jan 31, 2024
d5e8fdf
all colored jumpsuits done
13spacemen Jan 31, 2024
2cc6893
renamed a ton of vox icon states
13spacemen Jan 31, 2024
ed93e77
more sprite work
13spacemen Jan 31, 2024
a3ed0fb
more sprite sheet stuff, if no species icon fall back to original icon
13spacemen Jan 31, 2024
c72fed2
color defines, code cleanup, commented out paradise race flags, get r…
13spacemen Jan 31, 2024
2b41da2
attempted repairing chest
13spacemen Feb 1, 2024
111df09
fixed crimson tails
13spacemen Feb 1, 2024
dd576b8
more sprite stuff
13spacemen Feb 1, 2024
fea8c3e
less pointless sprite sheets definitions, singlelined sprite sheets d…
13spacemen Feb 6, 2024
2f5d200
moved all undershirts to one file
13spacemen Feb 6, 2024
e935e21
head sprite stuff
13spacemen Feb 6, 2024
5303cff
fixed tail sprite errors
13spacemen Feb 8, 2024
7b35cc4
completed all heads
13spacemen Feb 8, 2024
4538ffe
all legs done
13spacemen Feb 8, 2024
e03611f
completed all arms
13spacemen Feb 8, 2024
07f8d81
completed all chest sprites
13spacemen Feb 8, 2024
1c1bdf6
added classic vox sprite
13spacemen Feb 8, 2024
2afe366
vox organ and tail stuff
13spacemen Feb 9, 2024
fcc3069
hair gradient support, eyes static moved to species, order prefix for…
13spacemen Feb 9, 2024
2ce8b61
undid random newlines and spaces, brain uses alt brain name in some t…
13spacemen Feb 10, 2024
67b6971
added a ton of vox clothing sprites, species clothing defines, vox ca…
13spacemen Feb 10, 2024
7e5ccc3
moth species define, removed redundant survival box code, lazy fetch …
13spacemen Feb 10, 2024
234b9d6
more code cleanup
13spacemen Feb 10, 2024
8808dbc
vox organs no longer ORGAN_ROBOTIC, changed some descs of organs
13spacemen Feb 10, 2024
ed3b20f
mmi proper cortical stack sprite, made some references to "brain" con…
13spacemen Feb 11, 2024
a2559d1
add vox bird traumas, vox hide to maint loot, vox plushie to crate an…
13spacemen Feb 11, 2024
c6572eb
cold resist is back, removed burn and stun mods
13spacemen Feb 12, 2024
a6dbcda
basic hair color and style changing support
13spacemen Feb 12, 2024
21f848c
vox med jumpsuit crosses are blue
13spacemen Feb 12, 2024
58f8e31
correct vox skin tone colors in tgui, green renamed to lime, delete p…
13spacemen Feb 12, 2024
f9c4182
species sprite support for chameleon item
13spacemen Feb 12, 2024
1022289
fixed vox prefs, telomeres traits check for noclone, add mask pref fo…
13spacemen Feb 15, 2024
b6c71cd
sorted and renamed many icon states
13spacemen Feb 15, 2024
593d4a9
lizard robe correctly in uniforms, sprited new signaltech vox jumpsui…
13spacemen Feb 16, 2024
10dc293
vox blood color defines, maint loot, traumas
13spacemen Feb 17, 2024
a002733
added artist, recovery, clerk uniforms by Falcon2346 from /vg/station
13spacemen Feb 18, 2024
5cc73e7
vox shaped bloody mob overlays, more use of species defines, species …
13spacemen Feb 19, 2024
844a6e1
new winterhood, labcoat, chem labcoat, atmos, engine, rsecurity, para…
13spacemen Feb 25, 2024
f4b39d8
vox gene, cmo, green, tox, vir, robo labcoats done by me
13spacemen Feb 25, 2024
82fa614
rebase errors fix
13spacemen Feb 25, 2024
d62de0d
added medical labcoat by falcon2346
13spacemen Feb 26, 2024
c243d80
redid signaltech jumpsuit based on falcon's atmos tech jumpsuit
13spacemen Feb 27, 2024
f253243
vox gags support, remove unneeded sprite sheet code and fix oversights
13spacemen Mar 17, 2024
077da98
emp severity fix, null checks, fixed golem head/chest sprites, added …
13spacemen Apr 15, 2024
2596eb8
modularized some code
13spacemen Apr 21, 2024
8ff8d55
suicide global list, list init optimizations
13spacemen May 21, 2024
2b2de78
reverse unnecessary file changes, whitespace, modularization
13spacemen May 21, 2024
936d0bc
added new cardborg head vox sprite, better vox magboots sprites, gree…
13spacemen May 21, 2024
86179fd
increased pref window height by 70px
13spacemen Jun 8, 2024
826ead5
repath gas reagents, fix vox->ipc runtime, remove custom cough/sneeze…
13spacemen Jun 14, 2024
629efa7
misc minor edits
13spacemen Jun 14, 2024
a2f82d0
removed var/is_husked from bodyparts
13spacemen Jun 18, 2024
939a98d
modified eyes_missing sprites for vox to be similar to blue vox blood
13spacemen Jun 18, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion code/__DEFINES/DNA.dm
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@
#define DNA_HAIR_STYLE_BLOCK 7

/// This number needs to equal the total number of DNA blocks
#define DNA_FEATURE_BLOCKS 22
#define DNA_FEATURE_BLOCKS 28

#define DNA_MUTANT_COLOR_BLOCK 1
#define DNA_ETHEREAL_COLOR_BLOCK 2
Expand All @@ -123,6 +123,12 @@
#define DNA_PRETERNIS_WEATHERING_BLOCK 20
#define DNA_PRETERNIS_ANTENNA_BLOCK 21
#define DNA_PRETERNIS_EYE_BLOCK 22
#define DNA_VOX_QUILLS_BLOCK 23
#define DNA_VOX_FACIAL_QUILLS_BLOCK 24
#define DNA_VOX_TAIL_MARKINGS_BLOCK 25
#define DNA_VOX_BODY_MARKINGS_BLOCK 26
#define DNA_VOX_SKIN_TONE_BLOCK 27
#define DNA_MUTANT_COLOR_SECONDARY 28

#define DNA_SEQUENCE_LENGTH 4
#define DNA_MUTATION_BLOCKS 8
Expand Down Expand Up @@ -183,6 +189,9 @@
/// has a tail
#define HAS_TAIL 24
#define NONANITES 25
#define HAIRCOLOR 26
#define FACEHAIRCOLOR 27
#define MUTCOLORS_SECONDARY 28

//organ slots
#define ORGAN_SLOT_BRAIN "brain"
Expand Down
7 changes: 7 additions & 0 deletions code/__DEFINES/species_clothing_paths.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
//HUMAN PATHS
///The dmi for humanoid uniforms
#define DEFAULT_UNIFORM_FILE 'icons/mob/clothing/uniform/uniform.dmi'
///The dmi for humanoid shoes
#define DEFAULT_SHOES_FILE 'icons/mob/clothing/feet/feet.dmi'
///The dmi for humanoid oversuits
#define DEFAULT_SUIT_FILE 'icons/mob/clothing/suit/suit.dmi'
10 changes: 10 additions & 0 deletions code/__DEFINES/{yogs_defines}/colors.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
//Vox blood color
#define COLOR_BLOOD_VOX "#2299FC"

//Color blending modes
#define COLOR_BLEND_MULTIPLY "multiply"
#define COLOR_BLEND_ADD "add"

//Color matrix
#define COLOR_MATRIX_ADD(color) list(COLOR_RED, COLOR_VIBRANT_LIME, COLOR_BLUE, color)
#define COLOR_MATRIX_OVERLAY(color) list(COLOR_BLACK, COLOR_BLACK, COLOR_BLACK, color)
2 changes: 2 additions & 0 deletions code/__DEFINES/{yogs_defines}/is_helpers.dm
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
#define isvox(A) (is_species(A, /datum/species/vox))

#define isdarkspawn(A) (A?.mind?.has_antag_datum(/datum/antagonist/darkspawn))
#define isthrall(A) (A?.mind?.has_antag_datum(/datum/antagonist/thrall))
#define ispsyche(A) (A?.mind?.has_antag_datum(/datum/antagonist/psyche)) //non thrall teammates
Expand Down
4 changes: 4 additions & 0 deletions code/__DEFINES/{yogs_defines}/mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,7 @@
#define REGEN_BLOOD_REQUIREMENT 40 // The amount of "blood" that a slimeperson consumes when regenerating a single limb.

#define MONKIFY_BLOOD_COEFFICIENT (BLOOD_VOLUME_MONKEY/BLOOD_VOLUME_GENERIC) //the ratio of monkey to human blood volume so a 100% blood volume monkey will not instantly die when you turn it into a human with ~58% blood volume

#define SPECIES_VOX "vox"

#define BUTT_SPRITE_VOX "vox"
11 changes: 11 additions & 0 deletions code/__DEFINES/{yogs_defines}/species_clothing_paths.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
//VOX PATHS
#define VOX_MASK_FILE 'icons/mob/clothing/species/vox/mask.dmi'
#define VOX_HEAD_FILE 'icons/mob/clothing/species/vox/head.dmi'
#define VOX_BACK_FILE 'icons/mob/clothing/species/vox/back.dmi'
#define VOX_EARS_FILE 'icons/mob/clothing/species/vox/ears.dmi'
#define VOX_EYES_FILE 'icons/mob/clothing/species/vox/eyes.dmi'
#define VOX_SHOES_FILE 'icons/mob/clothing/species/vox/shoes.dmi'
#define VOX_GLOVES_FILE 'icons/mob/clothing/species/vox/gloves.dmi'
#define VOX_HELMET_FILE 'icons/mob/clothing/species/vox/helmet.dmi'
#define VOX_SUIT_FILE 'icons/mob/clothing/species/vox/suit.dmi'
#define VOX_UNIFORM_FILE 'icons/mob/clothing/species/vox/uniform.dmi'
9 changes: 9 additions & 0 deletions code/__HELPERS/global_lists.dm
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,15 @@
init_sprite_accessory_subtypes(/datum/sprite_accessory/ipc_screens, GLOB.ipc_screens_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/ipc_antennas, GLOB.ipc_antennas_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/ipc_chassis, GLOB.ipc_chassis_list)
// Vox bodyparts
init_sprite_accessory_subtypes(/datum/sprite_accessory/vox_quills, GLOB.vox_quills_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/vox_facial_quills, GLOB.vox_facial_quills_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/vox_tails, GLOB.vox_tails_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/vox_body_markings, GLOB.vox_body_markings_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/vox_tail_markings, GLOB.vox_tail_markings_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/tails_animated/vox, GLOB.animated_vox_tails_list)
init_sprite_accessory_subtypes(/datum/sprite_accessory/vox_tail_markings_animated, GLOB.animated_vox_tail_markings_list)




Expand Down
11 changes: 7 additions & 4 deletions code/__HELPERS/icons.dm
Original file line number Diff line number Diff line change
Expand Up @@ -228,10 +228,13 @@ world
/icon/proc/Greyify()
MapColors(0.75,0.3,0.3, 0.6,0.75,0.6, 0.10,0.10,0.50, 0,0,0)

/icon/proc/ColorTone(tone)
Greyify()
/icon/proc/ColorTone(tone, greyify = FALSE)
if(greyify)
Greyify()
else
GrayScale()

var/list/TONE = ReadRGB(tone)
var/list/TONE = rgb2num(tone)
var/gray = round(TONE[1]*0.3 + TONE[2]*0.59 + TONE[3]*0.11, 1)

var/icon/upper = (255-gray) ? new(src) : null
Expand Down Expand Up @@ -922,7 +925,7 @@ world

/proc/getHologramIcon(icon/A, safety=1)//If safety is on, a new icon is not created.
var/icon/flat_icon = safety ? A : new(A)//Has to be a new icon to not constantly change the same icon.
flat_icon.ColorTone(rgb(125,180,225))//Let's make it bluish.
flat_icon.ColorTone(rgb(125,180,225), greyify = TRUE)//Let's make it bluish.
flat_icon.ChangeOpacity(0.5)//Make it half transparent.
var/icon/alpha_mask = new('icons/effects/effects.dmi', "scanline")//Scanline effect.
flat_icon.AddAlphaMask(alpha_mask)//Finally, let's mix in a distortion effect.
Expand Down
18 changes: 17 additions & 1 deletion code/__HELPERS/mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -95,10 +95,21 @@
init_sprite_accessory_subtypes(/datum/sprite_accessory/ipc_antennas, GLOB.ipc_antennas_list)
if(!GLOB.ipc_chassis_list.len)
init_sprite_accessory_subtypes(/datum/sprite_accessory/ipc_chassis, GLOB.ipc_chassis_list)
if(!GLOB.vox_quills_list.len)
init_sprite_accessory_subtypes(/datum/sprite_accessory/vox_quills, GLOB.vox_quills_list)
if(!GLOB.vox_facial_quills_list.len)
init_sprite_accessory_subtypes(/datum/sprite_accessory/vox_facial_quills, GLOB.vox_facial_quills_list)
if(!GLOB.vox_tails_list.len)
init_sprite_accessory_subtypes(/datum/sprite_accessory/vox_tails, GLOB.vox_tails_list)
if(!GLOB.vox_body_markings_list.len)
init_sprite_accessory_subtypes(/datum/sprite_accessory/vox_body_markings, GLOB.vox_body_markings_list)
if(!GLOB.vox_tail_markings_list.len)
init_sprite_accessory_subtypes(/datum/sprite_accessory/vox_tail_markings, GLOB.vox_tail_markings_list)

//For now we will always return none for tail_human and ears. this shit was unreadable if you do somethign like this make it at least readable
return(list(
"mcolor" = "#[pick("7F","FF")][pick("7F","FF")][pick("7F","FF")]",
"mcolor_secondary" = "#[pick("7F","FF")][pick("7F","FF")][pick("7F","FF")]",
"gradientstyle" = random_hair_gradient_style(10),
"gradientcolor" = "#[pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F")]",
"tail_lizard" = pick(GLOB.tails_list_lizard),
Expand Down Expand Up @@ -126,7 +137,12 @@
"pod_hair" = pick(GLOB.pod_hair_list),
"ipc_screen" = pick(GLOB.ipc_screens_list),
"ipc_antenna" = pick(GLOB.ipc_antennas_list),
"ipc_chassis" = pick(GLOB.ipc_chassis_list)
"ipc_chassis" = pick(GLOB.ipc_chassis_list),
"vox_skin_tone" = pick(GLOB.vox_skin_tones),
"vox_quills" = pick(GLOB.vox_quills_list),
"vox_facial_quills" = pick(GLOB.vox_facial_quills_list),
"vox_body_markings" = pick(GLOB.vox_body_markings_list),
"vox_tail_markings" = pick(GLOB.vox_tail_markings_list)
))

/proc/random_hair_style(gender)
Expand Down
4 changes: 4 additions & 0 deletions code/_globalvars/lists/maintenance_loot.dm
Original file line number Diff line number Diff line change
Expand Up @@ -80,12 +80,14 @@ GLOBAL_LIST_INIT(maintenance_loot_traditional,list(
/obj/item/clothing/mask/breath = W_UNCOMMON,
/obj/item/tank/internals/air = W_COMMON,
/obj/item/tank/internals/anesthetic = W_RARE,
/obj/item/tank/internals/nitrogen = W_RARE,
/obj/item/tank/internals/emergency_oxygen = W_UNCOMMON,
/obj/item/tank/internals/emergency_oxygen/empty = W_UNCOMMON,
/obj/item/tank/internals/emergency_oxygen/engi = W_RARE,
/obj/item/tank/internals/emergency_oxygen/engi/empty = W_RARE,
/obj/item/tank/internals/emergency_oxygen/double = W_MYTHICAL,
/obj/item/tank/internals/emergency_oxygen/double/empty = W_MYTHICAL,
/obj/item/tank/internals/emergency_oxygen/vox = W_MYTHICAL,
/obj/item/tank/internals/ipc_coolant = W_RARE,
/obj/item/tank/internals/ipc_coolant/empty = W_RARE,
/obj/item/tank/internals/plasma = W_LEGENDARY,
Expand Down Expand Up @@ -365,6 +367,7 @@ GLOBAL_LIST_INIT(maintenance_loot_traditional,list(
/obj/item/stack/sheet/animalhide/gorilla = W_RARE,
/obj/item/stack/sheet/animalhide/human = W_RARE,
/obj/item/stack/sheet/animalhide/lizard = W_RARE,
/obj/item/stack/sheet/animalhide/vox = W_RARE,
/obj/item/stack/sheet/animalhide/monkey = W_RARE,
/obj/item/stack/sheet/animalhide/xeno = W_RARE,
/obj/item/storage/bag/money = W_RARE,
Expand Down Expand Up @@ -581,6 +584,7 @@ GLOBAL_LIST_INIT(maintenance_loot_makeshift,list(
/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/golem/adamantine = W_MYTHICAL,
/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/gorilla = W_MYTHICAL,
/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/lizard = W_MYTHICAL,
/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/vox = W_MYTHICAL,
/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/moth = W_MYTHICAL,
/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/plant = W_MYTHICAL,
/obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/shadow = W_MYTHICAL,
Expand Down
8 changes: 6 additions & 2 deletions code/controllers/subsystem/traumas.dm
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,10 @@ SUBSYSTEM_DEF(traumas)
/obj/item/clothing/suit/chickensuit, /obj/item/clothing/head/chicken,
/obj/item/clothing/suit/toggle/owlwings, /obj/item/clothing/under/costume/owl, /obj/item/clothing/mask/gas/owl_mask,
/obj/item/clothing/under/costume/griffin, /obj/item/clothing/shoes/griffin, /obj/item/clothing/head/griffin,
/obj/item/clothing/head/helmet/space/freedom, /obj/item/clothing/suit/space/freedom)),
/obj/item/clothing/head/helmet/space/freedom, /obj/item/clothing/suit/space/freedom, /obj/item/toy/plush/voxplushie,
/obj/item/clothing/mask/breath/vox, /obj/item/clothing/suit/space/vox, /obj/item/clothing/head/helmet/space/vox,
/obj/item/clothing/shoes/magboots/vox, /obj/item/clothing/gloves/color/yellow/vox, /obj/item/flag/species/vox, /obj/item/stack/sheet/animalhide/vox,
/obj/item/organ/tail/vox)),

"anime" = typecacheof(list(/obj/item/clothing/under/costume/schoolgirl, /obj/item/katana, /obj/item/reagent_containers/food/snacks/sashimi, /obj/item/reagent_containers/food/snacks/chawanmushi,
/obj/item/reagent_containers/food/drinks/bottle/sake, /obj/item/throwing_star, /obj/item/clothing/head/kitty/genuine, /obj/item/clothing/suit/space/space_ninja,
Expand All @@ -162,7 +165,8 @@ SUBSYSTEM_DEF(traumas)
"the supernatural" = typecacheof(list(/datum/species/golem/clockwork, /datum/species/golem/runic)),
"aliens" = typecacheof(list(/datum/species/abductor, /datum/species/jelly, /datum/species/pod,
/datum/species/shadow, /datum/species/polysmorph)),
"anime" = typecacheof(list(/datum/species/human/felinid))
"anime" = typecacheof(list(/datum/species/human/felinid)),
"birds" = typecacheof(list(/datum/species/vox))
)

return SS_INIT_SUCCESS
Expand Down
7 changes: 6 additions & 1 deletion code/datums/components/bloodysoles.dm
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@ Like its parent but can be applied to carbon mobs instead of clothing items
*/

/datum/component/bloodysoles/feet
var/static/mutable_appearance/bloody_feet
var/mutable_appearance/bloody_feet

/datum/component/bloodysoles/feet/Initialize()
if(!iscarbon(parent))
Expand All @@ -236,6 +236,11 @@ Like its parent but can be applied to carbon mobs instead of clothing items
/datum/component/bloodysoles/feet/update_icon()
. = list()
if(ishuman(wielder))// Monkeys get no bloody feet :(
var/obj/item/bodypart/l_leg/left_leg = wielder.get_bodypart(BODY_ZONE_L_LEG)
var/obj/item/bodypart/r_leg/right_leg = wielder.get_bodypart(BODY_ZONE_R_LEG)
if(left_leg?.species_id == right_leg?.species_id)
if(icon_exists(bloody_feet.icon, "shoeblood_[left_leg.species_id]"))
bloody_feet.icon_state = "shoeblood_[left_leg.species_id]"
if(HAS_BLOOD_DNA(wielder))
bloody_feet.color = get_blood_dna_color(wielder.return_blood_DNA())
. += bloody_feet
Expand Down
5 changes: 2 additions & 3 deletions code/datums/diseases/advance/symptoms/shedding.dm
Original file line number Diff line number Diff line change
Expand Up @@ -44,14 +44,13 @@ BONUS
to_chat(H, span_warning("Your hair starts to fall out in clumps..."))
addtimer(CALLBACK(src, PROC_REF(Shed), H, FALSE), 50)
if(5)
if(!(H.facial_hair_style == "Shaved") || !(H.hair_style == "Bald"))
if(!(H.facial_hair_style == "Shaved") || !(H.hair_style == "Bald") || !(H.hair_style == "None"))
to_chat(H, span_warning("Your hair starts to fall out in clumps..."))
addtimer(CALLBACK(src, PROC_REF(Shed), H, TRUE), 50)

/datum/symptom/shedding/proc/Shed(mob/living/carbon/human/H, fullbald)
if(fullbald)
H.facial_hair_style = "Shaved"
H.hair_style = "Bald"
H.dna.species.go_bald()
else
H.hair_style = "Balding Hair"
H.update_hair()
42 changes: 41 additions & 1 deletion code/datums/dna.dm
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,8 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block())

if(features["mcolor"])
L[DNA_MUTANT_COLOR_BLOCK] = sanitize_hexcolor(features["mcolor"], include_crunch = FALSE)
if(features["mcolor_secondary"])
L[DNA_MUTANT_COLOR_SECONDARY] = sanitize_hexcolor(features["mcolor_secondary"], include_crunch = FALSE)
if(features["body_markings"])
L[DNA_LIZARD_MARKINGS_BLOCK] = construct_block(GLOB.body_markings_list.Find(features["body_markings"]), GLOB.body_markings_list.len)
if(features["tail_lizard"])
Expand Down Expand Up @@ -231,6 +233,16 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block())
L[DNA_POD_HAIR_BLOCK] = construct_block(GLOB.pod_hair_list.Find(features["pod_hair"]), GLOB.pod_hair_list.len)
if(features["pod_flower"])
L[DNA_POD_FLOWER_BLOCK] = construct_block(GLOB.pod_flower_list.Find(features["pod_flower"]), GLOB.pod_flower_list.len)
if(features["vox_quills"])
L[DNA_VOX_QUILLS_BLOCK] = construct_block(GLOB.vox_quills_list.Find(features["vox_quills"]), GLOB.vox_quills_list.len)
if(features["vox_facial_quills"])
L[DNA_VOX_FACIAL_QUILLS_BLOCK] = construct_block(GLOB.vox_facial_quills_list.Find(features["vox_facial_quills"]), GLOB.vox_facial_quills_list.len)
if(features["vox_tail_markings"])
L[DNA_VOX_TAIL_MARKINGS_BLOCK] = construct_block(GLOB.vox_tail_markings_list.Find(features["vox_tail_markings"]), GLOB.vox_tail_markings_list.len)
if(features["vox_body_markings"])
L[DNA_VOX_BODY_MARKINGS_BLOCK] = construct_block(GLOB.vox_body_markings_list.Find(features["vox_body_markings"]), GLOB.vox_body_markings_list.len)
if(features["vox_skin_tone"])
L[DNA_VOX_SKIN_TONE_BLOCK] = construct_block(GLOB.vox_skin_tones.Find(features["vox_skin_tone"]), GLOB.vox_skin_tones.len)

for(var/blocknum in 1 to DNA_FEATURE_BLOCKS)
. += L[blocknum] || random_string(GET_UI_BLOCK_LEN(blocknum), GLOB.hex_characters)
Expand Down Expand Up @@ -348,6 +360,8 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block())
switch(blocknumber)
if(DNA_MUTANT_COLOR_BLOCK)
set_uni_feature_block(blocknumber, sanitize_hexcolor(features["mcolor"], include_crunch = FALSE))
if(DNA_MUTANT_COLOR_SECONDARY)
set_uni_feature_block(blocknumber, sanitize_hexcolor(features["mcolor_secondary"], include_crunch = FALSE))
if(DNA_LIZARD_MARKINGS_BLOCK)
set_uni_feature_block(blocknumber, construct_block(GLOB.body_markings_list.Find(features["body_markings"]), GLOB.body_markings_list.len))
if(DNA_LIZARD_TAIL_BLOCK)
Expand Down Expand Up @@ -388,6 +402,16 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block())
set_uni_feature_block(blocknumber, construct_block(GLOB.pod_hair_list.Find(features["pod_hair"]), GLOB.pod_hair_list.len))
if(DNA_POD_FLOWER_BLOCK)
set_uni_feature_block(blocknumber, construct_block(GLOB.pod_flower_list.Find(features["pod_flower"]), GLOB.pod_flower_list.len))
if(DNA_VOX_QUILLS_BLOCK)
set_uni_feature_block(blocknumber, construct_block(GLOB.vox_quills_list.Find(features["vox_quills"]), GLOB.vox_quills_list.len))
if(DNA_VOX_FACIAL_QUILLS_BLOCK)
set_uni_feature_block(blocknumber, construct_block(GLOB.vox_facial_quills_list.Find(features["vox_facial_quills"]), GLOB.vox_facial_quills_list.len))
if(DNA_VOX_TAIL_MARKINGS_BLOCK)
set_uni_feature_block(blocknumber, construct_block(GLOB.vox_tail_markings_list.Find(features["vox_tail_markings"]), GLOB.vox_tail_markings_list.len))
if(DNA_VOX_BODY_MARKINGS_BLOCK)
set_uni_feature_block(blocknumber, construct_block(GLOB.vox_body_markings_list.Find(features["vox_body_markings"]), GLOB.vox_body_markings_list.len))
if(DNA_VOX_SKIN_TONE_BLOCK)
set_uni_feature_block(blocknumber, construct_block(GLOB.vox_skin_tones.Find(features["vox_skin_tone"]), GLOB.vox_skin_tones.len))

//Please use add_mutation or activate_mutation instead
/datum/dna/proc/force_give(datum/mutation/human/HM)
Expand Down Expand Up @@ -596,12 +620,18 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block())
eye_color = sanitize_hexcolor(get_uni_identity_block(structure, DNA_EYE_COLOR_BLOCK))
facial_hair_style = GLOB.facial_hair_styles_list[deconstruct_block(get_uni_identity_block(structure, DNA_FACIAL_HAIR_STYLE_BLOCK), GLOB.facial_hair_styles_list.len)]
if(HAS_TRAIT(src, TRAIT_BALD))
hair_style = "Bald"
if(isvox(src))
dna.features["vox_quills"] = "None"
dna.update_uf_block(DNA_VOX_QUILLS_BLOCK)
else
hair_style = "Bald"
else
hair_style = GLOB.hair_styles_list[deconstruct_block(get_uni_identity_block(structure, DNA_HAIR_STYLE_BLOCK), GLOB.hair_styles_list.len)]
var/features = dna.unique_features
if(dna.features["mcolor"])
dna.features["mcolor"] = sanitize_hexcolor(get_uni_feature_block(features, DNA_MUTANT_COLOR_BLOCK))
if(dna.features["mcolor_secondary"])
dna.features["mcolor_secondary"] = sanitize_hexcolor(get_uni_feature_block(features, DNA_MUTANT_COLOR_SECONDARY))
if(dna.features["body_markings"])
dna.features["body_markings"] = GLOB.body_markings_list[deconstruct_block(get_uni_feature_block(features, DNA_LIZARD_MARKINGS_BLOCK), GLOB.body_markings_list.len)]
if(dna.features["tail_lizard"])
Expand Down Expand Up @@ -645,6 +675,16 @@ GLOBAL_LIST_INIT(total_uf_len_by_block, populate_total_uf_len_by_block())
dna.features["pod_hair"] = GLOB.pod_hair_list[deconstruct_block(get_uni_feature_block(features, DNA_POD_HAIR_BLOCK), GLOB.pod_hair_list.len)]
if(dna.features["pod_flower"])
dna.features["pod_flower"] = GLOB.pod_flower_list[deconstruct_block(get_uni_feature_block(features, DNA_POD_FLOWER_BLOCK), GLOB.pod_flower_list.len)]
if(dna.features["vox_quills"])
dna.features["vox_quills"] = GLOB.vox_quills_list[deconstruct_block(get_uni_feature_block(features, DNA_VOX_QUILLS_BLOCK), GLOB.vox_quills_list.len)]
if(dna.features["vox_facial_quills"])
dna.features["vox_facial_quills"] = GLOB.vox_facial_quills_list[deconstruct_block(get_uni_feature_block(features, DNA_VOX_FACIAL_QUILLS_BLOCK), GLOB.vox_facial_quills_list.len)]
if(dna.features["vox_tail_markings"])
dna.features["vox_tail_markings"] = GLOB.vox_tail_markings_list[deconstruct_block(get_uni_feature_block(features, DNA_VOX_TAIL_MARKINGS_BLOCK), GLOB.vox_tail_markings_list.len)]
if(dna.features["vox_body_markings"])
dna.features["vox_body_markings"] = GLOB.vox_body_markings_list[deconstruct_block(get_uni_feature_block(features, DNA_VOX_BODY_MARKINGS_BLOCK), GLOB.vox_body_markings_list.len)]
if(dna.features["vox_skin_tone"])
dna.features["vox_skin_tone"] = GLOB.vox_skin_tones[deconstruct_block(get_uni_feature_block(features, DNA_VOX_SKIN_TONE_BLOCK), GLOB.vox_skin_tones.len)]

if(icon_update)
dna.species.handle_body(src) // We want 'update_body_parts()' to be called only if mutcolor_update is TRUE, so no 'update_body()' here.
Expand Down
2 changes: 2 additions & 0 deletions code/datums/emotes.dm
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,8 @@
. = message_monkey
else if(isipc(user) && message_ipc)
. = message_ipc
else if(isvox(user) && message_vox)
. = message_vox
else if(isanimal(user) && message_simple)
. = message_simple

Expand Down
Loading
Loading